5 ms·
C# would be awesome except that it is a very "IDE intensive" language. Don't get me wrong, Visual Studio is a very good IDE (and MonoDevelop is shaping up nice
by j_baker 16y ago
C# would be awesome except that it is a very "IDE intensive" language. Don't get me wrong, Visual Studio is a very good IDE (and MonoDevelop is shaping up nicely), but I'd still prefer vim or emacs as opposed to needing a fancy IDE to be very productive.
- deleted 16y ago[deleted]
- sbt 16y agoI use Emacs/Eclipse in my job because I work with Erlang/Java, but previously held several C#/VS positions. I sometimes get the feeling that people who haven't worked with this combo don't realize how powerful it is. Visual Studio is great as an IDE for C/C++, but C#/VS just becomes an extremely productive experience, quite unlike Java/Eclipse (though the latter is getting somewhat better).
- hga 16y agoBack when I was using VC++/VS pre .NET for C/C++ I did all my editing in EMACS. Messy when I changed the line numbering out from under debugger breakpoints but it otherwise worked very well. How practical would that be nowadays?
- olavk 16y agoC# is designed with IDE support in mind. For example, in Linq the "map" syntax is: from a in b select a.x This syntax is actually backwards compared to both SQL and list comprehension syntax is most languages, which have the selector expression is before the input list. E.g in SQL: select b.x from b Or list comprehensions (in eg. Python): [a.x for a in b] So why did MS change the syntax like this? Most developers already knows SQL syntax, and Linq queries are supposed to be able to map directly to SQL. The reason it that it is not possible to provide code completion in the selector expression if the type of the list is not yet known. Hence in C# the list is written before the selector expression, so the editor helpfully can list all a's members when typing `select a.` Another example is "Partial Classes" which is a curious language feature which makes it more smooth to work with UI-designer generated files, but which I don't think has any useful function outside of an IDE. I don't think many other languages are designed with IDE support in mind in such a way. This makes it possible to provide a very smooth IDE experience.
- wvenable 16y agoFrom a theory perspective, SQL has it backwards. The projection operation in relational algebra would come last. It certainly helps with IDE interactions but it makes sense entirely on its own.
- buro9 16y agoThat's how I saw it too, much closer to set theory and relational algebra. Besides... when I write SQL I write it thus: SELECT * FROM BLAH Then refine to: SELECT * FROM BLAH WHERE FOO Before finally adding: SELECT COL1, COL2 FROM BLAH WHERE FOO Linq matches the way I construct SQL by putting it into the order I logically think of it: FROM BLAH WHERE FOO SELECT COL1, COL2
- olavk 16y agoI may be confused, but according to Wikipedia http://en.wikipedia.org/wiki/Projection_%28relational_algebra%29 http://en.wikipedia.org/wiki/Projection_%28relational_algebr... it seems that in relational algebra notation the attribute names are written before the relation, since the relation is an argument to the projection function. This seem to me to be closer to SQL syntax.
- wvenable 16y agoThe attribute names are written first, but it's like nested function calls: projection(selection(R)). The joins are 'evaluated' first, then selection (where), and then projection. I suspect that SQL was actually designed to match the notational order (but reversing the intent) they still got it wrong: to match the notation, it should be SELECT .. WHERE .. FROM.
- olavk 16y agoInteresting point, but that would apply to function notation in general, not just relational algebra. a(b(c(x))) is "backwards" because the functions are evaluated in the opposite order than they are written. This is a flaw in math and in most programming languages! I suppose stack-based languages have it right, and the OO method chaining syntax in Linq and in e.g. JQuery has it right, since evaluation order is left-to-right.
- nuclear_eclipse 16y agoI feel exactly the same way. I love using vim for everything when I'm working on other languages. But there's one saving grace of VS: http://www.viemu.com http://www.viemu.com -- It combines the power of modal editing, motions, and commands with the features of VS. It makes working on C# apps (or Xna games in my case) almost as nice as developing on a Unix system.