8 ms·
Of course MS Windows is better It has Visual Studio
- andr 18y agoAs a person that started programming on X11 in the late 80s and still uses vim daily, I can't think of a better environment than Visual Studio (possibly with the vi plugin) for programming. It is actually sad that guys like the author of this post and some hardcore Linux geeks pride themselves in the lack of good IDEs. The two main arguments are: 1) C# needs more boilerplate class code than C++ or other languages. Wrong. It definitely needs less boilerplate code than C++ and is close to Python and Ruby. 2) C# and Visual C++ have huge class libraries, which makes it impossible to use without an IDE. I'm sorry, but I would always go for the language with the big class library, rather than the one without it. Also, C++ has fairly hefty Unix libraries, too. I guess the real problem is sour grapes. For languages other than Microsoft's and Java (and maybe Lisp - I don't know), there aren't any good IDEs, which really understand your code, are stable and bug-free, and provide useful refactoring tools (e.g., change the name of a method and update all of its invocations). For one, the lack of a good IDE and toolchain really does reduce efficiency in large projects (although I would guess the average Rails project is not that large). It also steepens the learning curve. While learning Scala I've spent ours trying to find a mistake in a single line, which neither the IDE nor the compiler could reasonably point out, but Visual Studio would have explained right away.
- trezor 18y agoAgreed. The article pretty much reveals that the author has never used a good IDE like Visual Studio for anything besides the obvious like adding new class-files, making some GUIs and then running a compile. I bet he didn't even customize the default layout, panels and toolbars. My list of top 3 features in Visual Studio, and I suspect most of them to be in Eclipse as well: 1) The built in debugger which can be invoked at any time, having conditional breakpoints and which automatically tells you where your code fucks up, with full statefull variable inspection. This single feature has saved me more hours than I can possibly count up trough the years. For any project not microscopic, I can't imagine not having a feature like this. 2) IntelliSense and code completion. Having the editor automatically look up all possible members and fields while writing code isn't just handy when it comes to speed and avoiding typos. It allows constant discovery of features in the .NET libraries whenever writing code. And when it stops working, you know you just did something wrong in your previous line of code. Absolutely invaluable. 3) The built in refactoring tools. Granted Resharper provides you with a even better toolset, but the importance of having a editor which actually understands your code as more than just "text" can't be overstated. These are just a few of the things which I love about Visual Studio. It seems obvious to me as a developer that all these features would be handy for any language. As for the author's praise of emacs as the text-editor which can be hacked and extended into something resembling a Lisp-IDE (using Lisp no less!), I guess he missed the memo that Visual Studio already is an IDE and can be extended infinitely as well. Last time I checked there were addons for Visual Studio for Python, Ruby and Perl. And addons for Visual Studio can be written in any language with a .NET compiler, Lisp included. That the author somehow feels more "limited" when using a IDE, that is a editor with intelligent code-related features, than when simply using a editor, show that he is clearly full of himself. To me, that seems about as intelligent as complaining about how you are feeling more "limited" with unused commands in /bin/ that you don't fully know or use, than if the commands weren't there at all.
- chandler 18y agoReading these posts about the "excellent, bug free" VS development environment: in my experience, this isn't quite the truth. I've used VS6 since the late 90's, mostly on small projects (less than ~10 000 lines, four or five source files) until 2004, where I signed up to work maintenance on what is essentially a very large codebase (thousands of source files, between 500-50 000 lines per file). In 2006, my frustration with VS6's inability to handle a codebase of this magnitude finally convinced me to try a different IDE toolset. My specific complaints: - Starting VS6 is slow, and brings the computer to a halt. - Compiling & linking through the IDE is slow, and brings my computer to a halt. This doesn't happen when run from the commandline, nor, as follows, from a subprocess within Emacs. - Intellisense stops working a lot; nothing breaks programming flow like having your favorite crutch be unavailable for half the methods (this seems to affect large files more than small). Incidentally, though Emacs has Intellisense type functionality, I much prefer the generic completion available in Emacs/Vim (M-/ in Emacs, Ctrl-N in Vim), as it works within comments and for undefined/undeclared (and unprocessed) structures. - The method navigation panel fails often, with it listing a method correctly, but displaying "method not found" when selected (the workaround is to select different methods until one is found, then jump around the file for the desired method). I suspect this is related to the parser not handling default arguments correctly in certain cases. Finally, VS is the only application that has blue-screened my XP machine (this happened only twice, however, and wasn't involved in my decision to migrate to a different toolset). Regarding software, either you bend software to meet your needs, or it bends you to meet its limitations. Unfortunately, because VS has a high difficulty regarding the former, I found I was consistently having to integrate workarounds into my day to day coding practices.
- sysop073 18y agoI can't imagine how building is freezing your computer when using the command-line isn't; all VS does is call cl, link and mt in that order, you can procmon it and watch it happen. The Intellisense thing, on the other hand, is the most ridiculous thing I've ever seen - the official Microsoft solution is to delete the Intellisense database and restart VS, apparently it "gets corrupted over time" and they don't feel the need to look into it
- snprbob86 18y agoAgreed. All of his arguments are weak and because they are built on false foundations. I develop games with C#. The libraries we have are very thin and do not really benefit from IDE designer support. However, VS still makes my life a whole hell of a lot easier. The debugger is superb. Complete integration with my bug tracking and source management tools. On the fly error checking, saves me from a bad compile. Especially with Resharper http://www.jetbrains.com/resharper/ http://www.jetbrains.com/resharper/ If you do any C# development, you MUST try resharper and train your fingers to press alt+enter and ctrl+shift+r a lot. It makes Visual C# much more like JetBrain's other product, IDEA IDE. When your IDE is this good, you never be able to go back. I have worked two jobs in the past which were at Linux shops. I've used VIM quite extensively and become reasonably proficient at it. It is pretty good for editing all types of text. Too bad that I spend most of my time editing only one type of text: code of a particular language. Visual Studio is EXCELLENT at editing each type of text it supports, but it sucks something awful if you give it a new type and don't write plugins to handle it. Part of my job is writing VS plugins which is certainly no fun because of the COM legacy. Future versions are getting more C#-ish, nice, managed extensibility APIs that will be closer to that of Eclipse.
- apotheon 18y ago> C# needs more boilerplate class code than C++ or other languages. RTFA. C++ was used as an example alongside C#. > close to Python and Ruby. You must be using a different Ruby than me (or maybe C# 3.0 has magically gotten rid of all its repetitive BS). > C# and Visual C++ have huge class libraries, which makes it impossible to use without an IDE. That was kind of part of the point. > I'm sorry, but I would always go for the language with the big class library, rather than the one without it. That says more about you than about whether the lack of VS on Slackware makes MS Windows a better development platform. > I guess the real problem is sour grapes. This "they hate us for our freedom" crap gets old really fast, y'know. It's not all about jealousy, no matter how much you wish it was.
- anon 18y agoEclipse >> Visual Studio (and I use VS more)
- DanielBMarkham 18y agoThe title was a plug for windows, the gist was to try out unix editors before you decide on one, and the common thread was this wandering around the IDE world comparing random features of various products. As somebody who has hacked code with both notepad and batch files and various IDEs, I can say unequivocally that that most IDEs are configurable enough to win hands down. Pick a feature, and you can either find an IDE that comes with it out of the box or easily code one up. Good IDEs are a superset of good text editors. Maybe I'm missing something, but this didn't look like too good an article. It looked like a big morass with "Paul Graham" stuck in about half-way down, no doubt triggering the auto-feed into HN. (grin)
- Maro 18y agoI think UNIX users, seeing they're never going to get something as kickass as VS simply adopted an elitist approach and claim that for various reasons (language, vi, emacs) they don't even need one. The benefits of VS are obvious: - tabbed: (could you live without a tabbed browser?), also control+tab brings up a smart switcher - search: suppose you have a large project and are looking for a function call, irrespective of the language. VS brings up a docked window where you can double-click to jump straight to the line (compare with eg. TextMate, where search results are displayed in a window on top, so you can't see the results) - solution explorer: see the files and click them if you need them - for supported languages: code refactoring such as "smart" renames - and so on... - important: "it just works", it's fast, stable, etc. I've been trying to find something comparable for MacOS --- it doesn't even have to be an IDE, as in I don't want it to understand the code or compile it, just be a comparable text editor to VS. TextMate is promising, but it's not there yet, lots of little things are missing (good search, tab switcher, etc.) So for now I'm using Komodo Edit, which is pretty cool, only problem is that it's cross-platform and uses some middle API layer, so it's kind of slow (right-click a tab and wait a second for the menu to appear).
- DarkShikari 18y agoGiven what features you describe as "benefits of VS", it sounds like you haven't actually used any of the other editors you claim it is better than, since they have most of the same features. I'd guess most UNIX programmers have used Visual Studio at some point in their programming life (its hard to avoid it!), and the reason they don't like it is because their experience wasn't very good. I used Visual Studio for a week for a small project and got so sick of its interface that I ended up using it solely for the "compile" button (since the project had to use the Visual C compiler). The Visual C compiler has its own problems: for example, it is completely incapable of maintaining stack alignment, which required us to write a rather large workaround in the x264 code to disable all functions that depend on stack alignment when compiling with MSVC. Its lack of C99 support is also rather aggravating and gnaws at me every day when I find out that I have to reorganize the code I just wrote because I can't do something like declare a variable somewhere other than the top of a function. It all makes me want to throw away support for MSVC completely, but there oddly enough still seem to be people who try to compile x264 with it... In summary, there seems to be this arrogant attitude among Windows programmers that the UNIX programmers don't use their tools because they're being "elitist"... but in reality, they don't use the tools because they don't like them. And there's plenty of good reasons not to like them. (Which strikes me as odd--I've always found Windows programmers to be on average more elitist than *nix programmers--the former insists that their single IDE is unquestionably the best, while the latter will recommend dozens of editors, saying that you should pick the one you like most.)
- trezor 18y agoExpand your horizons a little. Learn to use Vim or Emacs, then spend a year doing serious development in something like Ruby instead of C# or Java, and do it in a Unix-like user environment. So does the author suggest anyone working with Java or C# should quit their job? Or does working with vim also provide you with an alternate space-time continuum which allows you to "just" spend one year doing doing something else entirely without it affecting the world around you and the requirements that you have a job which needs to get done?
- axod 18y agoYou can code java extremely well just using a text editor (Shock horror!) The idea you can't, or that you'll be less productive than an IDE user is just idiotic. What has the language got to do with anything? Yes, java is sometimes verbose, so? If most of your time is spent typing, you're doing it wrong IMHO, not matter how verbose the language.
- trezor 18y agoThe author suggested you should change not only the toolset you use, but also the languages. That makes it more than a light switch, and will probably interfere with getting work done. Since, you know, many companies have standards about which languages and platforms they stick to.
- cstejerean 18y agoFine, don't change the language. Keep using the same thing for 10 years until it becomes obsolete and then wonder why you're unemployed (hint: nothing to do with outsourcing).
- axod 18y agoIs lisp obsolete yet?
- cstejerean 18y ago
- snprbob86 18y agoOn the subject of toolable languages, the Microsoft Languages teams do a faaaantastic job of making languages that are designed to be used with a proper IDE. For example... Generator expression in Python: (p.Name for p in people) And in C#: from p in people select p.Name Or: people.Select(p => p.Name) Notice how in the C# version, the source comes before the projection. This enables code completion when you type "p." The VB, C#, and F# teams work their asses off to make all those little things work so nice. These are things that even the most experienced developers might not notice, but they attribute to that confusing "this sucks" shock when VS users need to use VIM or Emacs.
- apotheon 18y agoThe first thing I noticed about that C# example was that it was written in passive voice.
- snprbob86 18y agoLet's look at a more complex example. Assume "page" is a list of strings. We want to get every word on the page (exact whitespace treatment and tokenizing behavior isn't important; just the gist) Python: (word for line in page for word in line.split()) C#: from line in page, word in line.Split() select word I think that translates to: page.SelectMany(line => line.Split()) The Python is a bit confusing; the first C# example is much easier to read. Verbosity is traded for understanding. It is a careful balancing act, but I prefer the balance in C# in this instance. (Don't get me wrong, C# and Python are by far my two favorite languages, I love them both)
- scott_s 18y agoWindows programming needs an IDE because Windows is not a programmer's OS. Unix was designed by programmers for programmers. Windows was designed for end-users. The author got close to this distinction with the "Unix is my IDE" point, but didn't quite make the connection.
- akeefer 18y agoFor anyone who's worked extensively in both worlds, I think it should be obvious that a great IDE is better than a just a text editor. Yes, Emacs and Vim are amazing tools, but no, I'd never go back to Emacs after having used IntelliJ IDEA. There are a lot of hardcore Unix guys that I work with and even the most stubborn Vi/Emacs fans have been converted; it's just that good. VS for C and C++ was never worth giving up Emacs for, in my opinion. My perspective is that Java and C# have really amazing, helpful IDEs because the languages have really been designed with that sort of tooling in mind. You just can't have that same level of tooling support with dynamic typing; I've read arguments from people like Steve Yegge but I'll believe it when I see it. So sure, Java is more verbose and the IDE is the only thing that makes it more tolerable. And yes, I'd rather use a text editor for Ruby or Python. But that's not because text editors are inherently better than IDEs, or that the IDE is only useful for Java because it helps you manage the verbosity; it's just because the IDEs for those other languages aren't that good yet, and it's unclear if they really can be that good.
- apotheon 18y ago> that's not because text editors are inherently better than IDEs Who said they are inherently better? They're better for some languages, and not for others -- and that (alone) doesn't make either set of languages inherently better than the other, either. That's sorta the point in the original essay. > it's just because the IDEs for those other languages aren't that good yet, and it's unclear if they really can be that good. Those other languages are designed for people to actually enter a state of "flow" with the language, while IDE-oriented languages like C# are designed for people to actually enter a state of "flow" with the IDE. This does not mean that the only reason to use Vim instead of VS to write Ruby is the fact that VS doesn't support Ruby. Instead, it means that one can be at least as productive with Ruby/Vim as with C#/VS, because Ruby is designed to be highly productive under those conditions, while C# is designed to be highly productive under IDE conditions. That's the whole point -- and it looks to me like you missed half of it in your eagerness to decide that the reason people use Vim to write Ruby is that the clear superiority of IDEs cannot be achieved by a shitty language like Ruby.
- 18y ago