Python Tools for Visual Studio
blogs.msdn.com
blogs.msdn.com
This is quite an awesome tool that MSFT has released. But the top N comments are about the merits of IDE's vs vi then devolves into a pissing match about coding discipline.
Not thinking about how code looks (especially to other people) since I could just resize the window to whatever.
A lot of the build complexities were hidden, which was fine as long as everything worked, but, as soon as something small broke, I spent days reading documentation and uselessly searching MSDN and the web trying to get the project to build (so, not understanding my build environment is something else I had to fix).
There are lots more (source control, collaboration, etc). I know that switching my tools and my development environment made me a better programmer.
"Not thinking about how the code looks"--personal and cultural problem, not that of the tools; whether I'm in Vim or Coda or VS2010, I run a guideline at 100 characters (because 80 character lines is dumb in the age of the smallest dev monitor being 1280 pixels wide) and wrap to it. Never heard a complaint from anyone I work with.
Build complexity--here, you have something of a point, but MSBuild or Maven or whatever isn't appreciably different than tooling with makefiles (except that MSBuild probably has better documentation and there's some semblance of a standard way to do things).
Source control? I use Hg and Git, seamlessly, from within VS2010 or Eclipse. Not a problem at all. Collaboration? I've used VSTS for it before, but I just hang a Chrome window in my second monitor and keep Redmine (at home--Bugzilla, at work) and an IRC channel open. None of this is appreciably easier in the Land of the Holy Terminal--it's just different.
I've used both heavily IDE-driven stuff and the stone knives and bearskins that vi-land suggests, and my practices do not fundamental change from one to the other--because I understand what I am doing and how and why to do it. Changing your environment doesn't help you become a better programmer unless you understand why you did what you did and have developed the discipline to not do it regardless of tooling. Your problem existed between keyboard and chair, and it doesn't sound like you've fixed it--just hid it away.
I see it where I teach, the students that come in are most comfortable with windows + VS and they are productive in this environment. However, after just one course in C programming using vim, the students have a much greater appreciation of the process of producing software. They gain an understanding of compiling and linking, Makefiles and automated builds. (I'm not sure all of them like vim + make, but they see where VS is automating stuff for them and I think this is a valuable thing to learn).
Do you need this understanding to be a productive programmer? Of course not and indeed learning it is a bit of a timesink compared to getting your features finished.
Eventually like most things it is horses for courses (it doesn't make sense to me to develop C# code using vim as you have the worlds best(tm) IDE to help you), but personally I feel that IDEs have become too much of a crutch, they help so much that you can be productive without knowing what you are doing and, this maybe elitist, I feel this harms the industry a little.
Good programmers will always be good programmers, bad programmers can hide with an IDE, they have to learn what they are doing when dropped into vim + make (or other lo-fi tools of choice).
I have coworkers who use Eclipse (for Java). It's a CPU hog; often it locks up entirely, crashes are infrequent but, happen. I've tried it; I know I'm much faster with vim. For me, my time is worth more than putting up with Eclipse.
I use 80 characters per line because if I am at a larger monitor, I can have 2 or 3 split windows side by side. If I'm at a smaller terminal, everything's still readable. I find narrower code is more readable anyway. Most developers I admire write like that. In any case, this is a major flame war topic; if you don't like it, I'm glad that your system works for you.
As far as build systems, I'll take autotools and its learning curve and pain over VS any day. I can fix it when it breaks.
What are you trying to accomplish by saying that my problem is not the tools but that I'm bad at programming? Why is it that because you think you can write decent code in VS, that means that I didn't learn anything new when I switched from it? I know I certainly did; in fact, if I could give myself any advice back when I started any sort of formal programming, it would be: get off VS and Windows immediately! I would be three years ahead of where I am now.
(And re: Eclipse--yeah, it's a bit of a hog, but hardware is cheap. Developer time isn't. And the features it provides have no equivalent in vim et al.--just look in the Source dropdown menu for a number of significant productivity enhancers. Those are some of the more minor ones, even; Open Type probably saves me half an hour a day in the monster of a codebase I have to work in. Eclipse is by no means perfect, but it's geared toward reducing boilerplate and stepping on the annoyances involved in Getting Things Done.)
As far as Eclipse; I've worked with large codebases and I was faster with vim and knew my APIs better than any of my colleagues who used Eclipse. I heard them complain about Eclipse freezing pretty much daily (as well as doing something wrong when it came to interacting with perforce, often in a devastating way). I know that I Got more things Done than any of them.
I've found that many programmers who come from a Java background over to .NET have a bad habit of writing their code and deploying it without debugging it even once. It's so much trouble to debug for them, they just wait until it blows up and takes down the server. Or their error handling is just throwing a stack trace to a screen instead of actually handling the error.
Bad programming finds a way.
That said, I have no doubt that there are a plenty of people who are amazing at writing code in VS and are much better developers than I am.
Sorry, not trying to bust on you, but I write in all these IDEs...I still love VS.
But hey, C# is just a copy of Java, so maybe it evens out.
Having said that, I just watched the screencast[1] of Python intellisense in VS, very impressive.
Meanwhile in VS, after installing the Python plugin all of that stuff just worked the first time.
However, my assessment remains the same because now that autocomplete is finally working, it's still not as good as VS in my opinion.
1) VS shows documentation for each function in the autocomplete list. (Seen here http://i.imgur.com/wQpZZ.png ) IDEA does not.
2) VS shows type information where possible. IDEA does not.
3) VS shows the autocomplete list immediately after I type the space in "import ". With IDEA I have to hit Ctrl+Space to get the list.
4) The VS Python plugin worked with zero configuration. I had to configure an interpreter for IDEA and then wait a while for it to index everything.
I really don't like having to configure the interpreters but it's also nice when you're using project based virtual environments.
I for one, prefer win as a dev platform, no matter the deployment platform. That means if the language of choice is Python, I use Python on Windows. I always assumed that this is rather common..
I like the dualboot nature as when in debian I have no excuse to startup a game and get distracted, when in windows I know I'm off work and I can relax.
Also having access to good command line tools is priceless - I'm not conversant with powershell, so maybe windows is good for this now, but being able to quickly grep/sed/awk/vi/etc is so useful.
Server side on the other hand I'm all *nix all the time.
Wow. Ruby must have come a long way. Of course I gave up on it a long time ago when I couldn't find a good decompression library (only one that I could get to work was documented in Japanese).
I've found most python stuff "just works" or can be made to work.
Of course my use of Ruby dates to 2006 or so, as you can see that dates me quite a bit. I'm sure things have improved greatly over the years.
What about it? There's a few packages (mostly C extensions) that don't always build right, but the only problems I've had using pip and virtualenv on Windows have been related to corporate proxies/DNS.
For Python, I have, afaik, 3 (and a half) options:
1) Use something called "easy_install". Installing "easy_install" is not at all easy, which means that the entire experience is somewhat, well, ironic.
1b) Something with "egg files". I never quite understood what these are or how to use them, but I believe they are somehow related.
2) Use something called "pip". If "pip" knows your lib, then all is fine, but if not, things are bad. Also, there are different versions of pip for different "builds" of Python, and I do not know which to use. Tools seem not to be able to figure this out for me. In at least one case I ended up having multiple versions of pip, installed through different means, because the one that came with Python (which afair is the case) was not the right pip version.
3) Google for the library to discover that there is an installer for it, instead of using one of the package manager thingos mentioned above.
Trying to install trac on windows, I had to use all 3 of the above options (not 1b). I forgot what for what, but it wasn't trivial.
As you can see for my story, which is probably full of incorrect details, I'm not an expert. But I'm no expert of ruby gems either, and when I use Ubuntu I'm no expert at apt-get. Why do I need to be an expert of all the four-ish python library distributions to be able to install a single program?
virtualenv really is the key to getting this working well.
Installing trac is non-trivial no matter what operating system you're using.
64 bit vs 32 bit package problems can be horrible, too.
I introduced Python to the company in 2006 after writing a few very quick and dead simple test tools, and it seemed to pick up steam once our QA organization was looking for a way to beef up automation efforts.
Average users can easily manage installing Python since it requires no admin privileges, and it works out of the box without hassle (and it's already there for linux workstations). Once they have it installed you can just email *.pyw scripts and they work for Windows users automagically and email filters that block .exe attachments let them through. In the super restricted government computing environment I did this in (a mix of Windows and Linux computers), the only other reasonable option would have been the JVM, which wouldn't have been nearly as fast to develop against.
[1] I'm talking super simple one-off tools that are written and distributed in an afternoon, not fully designed and developed products. Keep in mind, creating a button that simply runs a regex against a file and spits out a result is literally magic for most people, what I can do in 3 hours of effort can save a non-programmer hundreds of man-hours of work.
I used it for Python's excellent NLTK (Natural Language Toolkit - http://www.nltk.org/) to build http://www.offensivest.com/books/ .
That site ranks the most vulgar English works released by Project Gutenberg. I calculated the ranking based on ~150k user ratings of the offensiveness of words listed on The Online Slang Dictionary.
In the *x world, I tend to use Perl, because I learned that first and know things in my fingers that I have to stop and think about with Python. In the Windows world, though Python for Windows just makes life so much easier.
I dev on Win because of the better multiple monitor support. I run using 3 large monitors on my Dev box, that I can rotate between landscape and portrait mode at will.
Python is my language of choice for WebDev, tools, etc...
A real POSIX shell that isn't slow. A fast gcc and the like.
It is a pain to compile psycopg2 and lxml on windows compared to linux. Cygwin and virtual machines are unfortunately too slow when you are used to working in a non-virtualized Linux environment.
I'm heavily biased though because once you are addicted to the command line, it becomes very hard to live on Windows :-(
I'm at one of the big three, where getting a *nix machine on the network is next to impossible without piles of paperwork, and Windows is a requirement for our test machines. I'm all for better Windows tools :)
Yes
How do you plan to protect IP?
Mainly by asking nicely.
We do use py2exe to package up our application, but that is more for convenience and to act as an indicator that we don't want people to go hacking around in the source code. Also, even though python makes up the bulk of the app, measured in lines of code, that is not where the really interesting things happen, so we're not too bothered one way or the other.
And in our studio, for good and bad, Windows is mostly deployed (audio guys might consider getting Macs again, as there was not proper support for ProTools on recent Windows versions)
I also script Android and *nix with it.
I see it as a universal shell.
I'm also writing a cross platform program in it. It's support for Windows features is quite good. (no gui stuff so I can't speak to that).
In the future I want to try pygame (or other gaming framework) if I can find the time.
It is already used heavily on the analysis side, but windows isn't required there.
And why do I use Windows? Excel.
At the moment though, I use Python for time management (using some scripts I wrote), a general purpose calculator, data munging on the fly, watching memcache stats, reporting and some other general bits of duct tape and string.
Having the power of .Net in a scripting language is great, but it would have been even nicer if that language was consistent with the others on the platform (C#, JS, Ruby, Python for instance.) In fact I regularly think of converting our existing PS deployment scripts to Python, and better tooling support would definitely help.
Don't try and think of it as similar to other shells like bash, but as an interactive console for objects. The operators, flow mechanisms and semantics make a lot of sense from that perspective, at least to me.
I've found that in that capacity, and as soon as I grokked the object pipeline, it's a wonderful tool with access to the entire .net ecosystem and a really hard push from Microsoft to have support for it on most of their tools
I've been automating several procedures with it and it's been working great.
That said, I also have some (iron)python scripts for some other tasks that don't involve as much glue between applications and services.
Our remote debugging solution depends on msvsmon to provide the attach-to-process functionality, so remote debugging doesn't work on linux out of the box. However, given a process attach infrastructure on linux you could reuse our debugger.py to talk back to Visual Studio, as that is a simple socket connection. If you wanted to implement that and contribute it back we'd definitely look at taking it.
The workaround is to reinstall Python after installing Python Tools.