For c# visual studio .NET in 2012 (I really haven't used it since) with its refactoring tools was pretty quick and its compilation system with integrated error checking in the text editor. It was really productive.
When I switched over to JavaScript I miss that a lot. Of course JavaScript just doesn't lean itself that well to automatic refactoring and the build process is significantly more complex too, so you only get local syntax checking usually in the editor.
And then eventually VS.NET got auto-help where it would should you documentation in a side window if you typed in a function or hovered over one. That was nice when using APIs you were not familiar with.
You could actually find all references/usages and be sure it was actually correct. I could click on an include and it would actually open the file no matter what and if it was referencing a DLL/Assembly it would immediate give me a decompile/documentation link.
The downside of the visual studio approach was the lack of text-based configuration. I spend hours adjusting settings in project files. (This was addressed via CMake when dealing with C++ but I do not think there was an equivalent for C# that I was aware of that the time.)
Unity3d: you can run a game in it and adjust everything live, including scripts. Also I've yet to see a UI framework as flexible as UGUI that is based on Unity's ECS architecture.
For me it's either been emacs with a lisp (SBCL or Clojure), or C# with Visual Studio. In both cases the reasons were similar -- deep editor integration with the language. Having an editor that understands how the language works and is structured makes refactoring and navigation much simpler, and makes it faster for me to author code.
That being said, most of the major editors are pretty great today. There's great support for all the top 10 languages in multiple editors, so if you want to write Go in VS Code, or Elixir in Atom, or Python in vim, you're probably going to have a good time (or at least the editor will do quite a lot for you). It's a great time to be a software developer!
Something that makes a big difference to me with Emacs and a Lisp relative to other languages and editors is that everything works by communicating to a running process.
Need to look up function args or a docstring? It doesn't have a separate thing that statically analyzes the code. It asks the running process. Want to see what an updated function outputs? It can use the state of the running process. Trying out some other change? It doesn't have to reload anything, lose or persist state, etc... it just updates the running process and you go from there. Want that running process to be on a remote server? An Android device? A page running in a web browser? Your powerful desktop while you work from a small laptop while lying in your hammock? No problem.
I don't understand why this hasn't caught on to the same degree with other languages. Most of them have REPLs and introspection tools, so they could behave this way.
Reload-on-change is a relatively common feature. While a lot of modern web programming frameworks and libraries don't rely heavily on in-memory state, this is very much a different experience from having your editor constantly communicating with a live process.
I got a chance to program a planning / operations research solution using Clojure back in 2011. It was my first encounter with a lisp language. For the first 1-2 months I felt like my brain was being rewired. After that, other (imperative) languages looked like shadows.
At first I used Counterclockwise as my IDE, but eventually switched to Emacs. I still use CCW to step debug something because it has a visual debugger, but it's rare.
I used to curse at Clojure libraries out there because they had no documentation. Then I looked at the library itself and saw it was written in 25 lines of code... Documentation would just make things harder. No other language has this power with this simplicity.
Sadly people can't handle the parenthesis. It's a canard. Move the open paren one word to the left and use prefix notation and you stop seeing them entirely. Give it a go!
Visual Lisp: Elegant and simple language, great graphical debugger with stepper (as in Visual Basic), great compiler, safe.
No other Lisp or other IDE's come close, but I never worked on a lisp machine, which should have about the same features. I never warmed up to Smalltalk enough to use it productively.
Visual Basic had a macro recorder feature (my lisp didn't have this, only emacs) and a similarily great IDE, but their language ecosystem is just horrible. You can easily write a fast and safe multithreaded server, but using their libraries just sucks. .NET got that better, but still not comparable.
PHP Komodo was great, but still. It was PHP. Horrible libraries.
Emacs+magit+c-mode+flycheck... or Visual C++ for my usual work is fine, but also very limited compared to better integrated systems. Haven't setup LSP yet though. This should improve things by a wide margin.
I also had a nice MultiEdit Pro integration with all my tools and docs, which was better than my current Emacs setup. But that was decades ago, on DOS.
Graphical development env's like Matlab Controldesk Simulink was nice, but not really productive. You constantly click in and out of nested blocks, connect dots and follow long lines, which is similar to counting parens manually with lisp. It sucks.
I used VFP for 10 years, from the insanely buggy original 3.0 release to the final "Sedna" edition. I miss the Command Window occasionally, but nothing else. Visual Studio at the time was something of a car crash, but it is a solid IDE now. And I never really used the 'builders', probably a) because they were so buggy in the original release and b) because I like to do things myself so I know what's going on.
Would you mind sharing what plugins your using? I've tried combining and setting up yourcompleteme, ale and one or two others I can't recall, but it never work as flawlessly as say vs code or pycharm in terms of completion, suggestions and quick doc viewing. Are you using vim or neovim?
I use neovim with deoplete as the completion engine and all the plugins to deoplete required for my work (python, JavaScript, Go). There’s a number of other useful plugins, but that alone get me pretty close to IDE level completion.
This is mostly for personal tinkering - typically Django and some APIs, or data stuff.
I’m a product guy by trade. Currently, focusing on data-related products and functionality, but have done SaaS, telco, etc.
For work I recently had to write some QA tools to extract data from BigQuery and verify that the payload is correct. Vim and google’s bq cli made it a lot easier than I expected.
I really like vscode with it's built-in terminal right now. It's a good balance for me of a nice modern IDE (intellisense, lint, fmt on save, etc.) and a classic Unix shell that I've been using for 20 years. Ctrl+click on grep -n results (or anything that looks like a relative path of the current open folder) opens the file/line in the editor.
Everything I've ever been employed to do has pretty much been throwing data around, there's no substitute for being able to iterate and view dataframes interactively.
I've used Visual Studio/pycharm for my coding coding but if I had to choose between no IDE and no data-repl I'd go no IDE every time.
IntelliJ. It has some great keyboard shortcuts for refactoring code, allows searching by symbol names, and has a wide selection of plugins. Surprisingly it's quite a consistent experience when editing across different languages, such as Java/Objective-C, which leads to less mental overhead with the tools (at least in my experience)
Python with PyCharm, especially when working with Django. It has a great understanding of whole toolkit and knows what to do and how to help you go faster.
From integrated testing, database source viewer up to working with remote interpreters, basically everything is included to make you focus on work without leaving the IDE.
The same goes when doing JavaScript, I'll go straight to WebStorm.
Need to mention my go to OS is ArchLinux with the latest KDE on top of it. If I have to use Windows, then I'll fire up an Arch Linux VM and live with a SSH session.
Arch Linux, i3, vscode with vim bindings, Firefox with Vimium.
Optimized for not using your mouse. It's not so much about literally saving you time since typing is only small portion of your day, but being able to express yourself with less effort goes a long way in keeping you from feeling mentally drained
Is there a simple way in vscode to pass selection of text to external tool like sort or python script, like vim can do?
I tried but didn't find anything simple...
Visual Studio 6, when you could drag and drop your UI, double click elements to code what they do, and all of the generated code was human readable. I'm not sure we'll ever get a development environment designed to put together software that quickly again with all of our modern expectations for design, mobile friendliness, etc.
Well, you can still do that in Visual Studio 2017 with Windows Forms. Remember when when they tried to do the same with Web Forms? What a disaster. I suspect this may have been the reason they moved to declarative UI like WPF but I personally don't buy that approach. Then again, I work on conversational interfaces now where there literally is no UI at all except a textbox and a send button..
Yeah like 'basic web functionality'. Unless you're happy with a full page refresh every time you click literally anything, And please don't suggest the UpdatePanel as a solution..
Yeah, I've done a good amount of VS2017, but WinForms is far from recommended these days, and I think VS6 was the height of easy, quick application development. I don't think anyone's come close to making something similar that holds up as well.
TypeScript, VSCode, Relay, GraphQL, Jest, React/React Native - a lot of modular tools which combine into a really safe and fast development environment for web/iOS.
Feedback is close to instant, tools are all open for improvements and the people running these projects are accessible.
Visual Basic Classic. It had an intuitive GUI builder, and database access built-in. This combined with a very good IDE and included documentation made for a very fast and effective development environment.
I have yet to encounter a better SQL IDE. In particular, it has fantastic auto complete and it has drivers for pretty much every database under the sun right out of the box.
Agreed, also the DB tooling in the jet rain IDEs basically is datagrip it just use a different UI, the underlying layer is near identical, enough that I have IntelliJ ‘projects’ that just open a DB connection.
Can you expand on this a bit? I've been writing Python in vim using some plugins-- mainly jedi-vim, YouCompleteMe, ctrlp, and SimpylFold. What does NeoVim do better?
I agree. VB6, Delphi and similar development environments are unmatched at quickly creating desktop applications. Is there anything similar to create web apps?
Delphi 3.0 (it went downhill after that). You could slap together a GUI quickly in the form editor, wire it up to your code (i.e. fill out the auto-generated event handlers) and compile in seconds (on a 1990s PC!).
There was a large selection of add-on GUI widgets and non-visual components, free and commercial, you could make your own and you could even modify the core Visual Component Library (the source was included).
If you needed to talk to other applications via COM, or directly to the OS, or load C/C++ libraries, it was easy. And you could do all that in one integrated IDE, instead of having to learn and orchestrate a jumbled mess of different tools.
It also didn't hurt that by targeting Windows only back then, you had something like 90% of the potential market covered.
I still use Delphi XE10 regularly, and it still is the most productive environment imho, (though object pascal is showing its age).
Second choice - Swift and Appcode, Swift is the most productive language I have used so far - all the static type checking but also it feels like a dynamically typed language.
69 comments
[ 0.29 ms ] story [ 119 ms ] threadWhen I switched over to JavaScript I miss that a lot. Of course JavaScript just doesn't lean itself that well to automatic refactoring and the build process is significantly more complex too, so you only get local syntax checking usually in the editor.
And then eventually VS.NET got auto-help where it would should you documentation in a side window if you typed in a function or hovered over one. That was nice when using APIs you were not familiar with.
You could actually find all references/usages and be sure it was actually correct. I could click on an include and it would actually open the file no matter what and if it was referencing a DLL/Assembly it would immediate give me a decompile/documentation link.
The downside of the visual studio approach was the lack of text-based configuration. I spend hours adjusting settings in project files. (This was addressed via CMake when dealing with C++ but I do not think there was an equivalent for C# that I was aware of that the time.)
Switching workspaces and windows is super fast, and have vim configured with shortcuts to switch between buffers.
That being said, most of the major editors are pretty great today. There's great support for all the top 10 languages in multiple editors, so if you want to write Go in VS Code, or Elixir in Atom, or Python in vim, you're probably going to have a good time (or at least the editor will do quite a lot for you). It's a great time to be a software developer!
Need to look up function args or a docstring? It doesn't have a separate thing that statically analyzes the code. It asks the running process. Want to see what an updated function outputs? It can use the state of the running process. Trying out some other change? It doesn't have to reload anything, lose or persist state, etc... it just updates the running process and you go from there. Want that running process to be on a remote server? An Android device? A page running in a web browser? Your powerful desktop while you work from a small laptop while lying in your hammock? No problem.
I don't understand why this hasn't caught on to the same degree with other languages. Most of them have REPLs and introspection tools, so they could behave this way.
There's a package for the nodejs ecosystem called "nodemon" https://github.com/remy/nodemon
That restarts the webserver on filechanges automatically.
The former is very basic and I don't really use it, but nodemon is quite nifty.
At first I used Counterclockwise as my IDE, but eventually switched to Emacs. I still use CCW to step debug something because it has a visual debugger, but it's rare.
I used to curse at Clojure libraries out there because they had no documentation. Then I looked at the library itself and saw it was written in 25 lines of code... Documentation would just make things harder. No other language has this power with this simplicity.
Sadly people can't handle the parenthesis. It's a canard. Move the open paren one word to the left and use prefix notation and you stop seeing them entirely. Give it a go!
No other Lisp or other IDE's come close, but I never worked on a lisp machine, which should have about the same features. I never warmed up to Smalltalk enough to use it productively.
Visual Basic had a macro recorder feature (my lisp didn't have this, only emacs) and a similarily great IDE, but their language ecosystem is just horrible. You can easily write a fast and safe multithreaded server, but using their libraries just sucks. .NET got that better, but still not comparable.
PHP Komodo was great, but still. It was PHP. Horrible libraries.
Emacs+magit+c-mode+flycheck... or Visual C++ for my usual work is fine, but also very limited compared to better integrated systems. Haven't setup LSP yet though. This should improve things by a wide margin.
I also had a nice MultiEdit Pro integration with all my tools and docs, which was better than my current Emacs setup. But that was decades ago, on DOS.
Graphical development env's like Matlab Controldesk Simulink was nice, but not really productive. You constantly click in and out of nested blocks, connect dots and follow long lines, which is similar to counting parens manually with lisp. It sucks.
I never need to install a package system, use VM, install a database engine or anything like that.
Maybe the most was download some components from some site (I remenber was a large forum back them).
Integrate REPL, form builder, report builder, rdbms, database builder, query builder, menu builder...
-----
Second best was Delphi 3/7.
Add a 34-inch ultrawide monitor (Dell has been best with color accuracy for me) to the mix and a nice keyboard, makes all the difference in the world!
Youcompleteme (works great for me, but I think I had to tinker with it) NERDTree NERDcommenter Gitgutter pdb (experimenting with it)
Probably forgetting something.
I’m a product guy by trade. Currently, focusing on data-related products and functionality, but have done SaaS, telco, etc.
For work I recently had to write some QA tools to extract data from BigQuery and verify that the payload is correct. Vim and google’s bq cli made it a lot easier than I expected.
Everything I've ever been employed to do has pretty much been throwing data around, there's no substitute for being able to iterate and view dataframes interactively.
I've used Visual Studio/pycharm for my coding coding but if I had to choose between no IDE and no data-repl I'd go no IDE every time.
From integrated testing, database source viewer up to working with remote interpreters, basically everything is included to make you focus on work without leaving the IDE.
The same goes when doing JavaScript, I'll go straight to WebStorm.
Need to mention my go to OS is ArchLinux with the latest KDE on top of it. If I have to use Windows, then I'll fire up an Arch Linux VM and live with a SSH session.
Optimized for not using your mouse. It's not so much about literally saving you time since typing is only small portion of your day, but being able to express yourself with less effort goes a long way in keeping you from feeling mentally drained
Someday I'll learn WPF.
Feedback is close to instant, tools are all open for improvements and the people running these projects are accessible.
I have yet to encounter a better SQL IDE. In particular, it has fantastic auto complete and it has drivers for pretty much every database under the sun right out of the box.
As a platform, WSL is a huge productivity boost for me
Also nodejs replace now 10+ y of custom created php helpers (as api wrappers mostly)
There was a large selection of add-on GUI widgets and non-visual components, free and commercial, you could make your own and you could even modify the core Visual Component Library (the source was included).
If you needed to talk to other applications via COM, or directly to the OS, or load C/C++ libraries, it was easy. And you could do all that in one integrated IDE, instead of having to learn and orchestrate a jumbled mess of different tools.
It also didn't hurt that by targeting Windows only back then, you had something like 90% of the potential market covered.
It was bliss while it lasted.
Second choice - Swift and Appcode, Swift is the most productive language I have used so far - all the static type checking but also it feels like a dynamically typed language.