Slashdot Mirror


Microsoft's Top Devs Don't Seem To Like Own Tools

ericatcw writes "Through tools such as Visual Basic and Visual Studio, Microsoft may have done more than any other vendor to make drag and drop-style programming mainstream. But its superstar developers seem to prefer old-school modes of crafting code. During the panel at the Professional Developers Conference earlier this month, the devs also revealed why they think writing tight, bare-metal code will come back into fashion, and why parallel programming hasn't caught up with the processors yet." These guys are senior enough that they don't seem to need to watch what they say and how it aligns with Microsoft's product roadmap. They are also dead funny. Here's Jeffrey Snover on managed code (being pushed by Microsoft through its Common Language Runtime tech): "Managed code is like antilock brakes. You used to have to be a good driver on ice or you would die. Now you don't have to pump your brakes anymore." Snover also joked that programming is getting so abstract, developers will soon have to use Natal to "write programs through interpretative dance."

496 comments

  1. Of course by Anonymous Coward · · Score: 1, Funny

    MSDN is another way of saying you don't know what you are doing.

  2. Wow! by Anonymous Coward · · Score: 5, Informative

    Advanced developers who learned how to code on what would be considered bare bones IDEs don't feel the need to use tools that are meant to let low level developers produce functional GUI applications without having to dedicate tons of hours.

    News at 11!

    1. Re:Wow! by rickb928 · · Score: 4, Interesting

      We've got a crew of .NET developers writing us an updated replacement to an existing VB app. I keep calling the new interface Fisher-Price, but actually it's Hasbro. I was mistaken, but an easy mistake to make.

      Where it should absolutely take two clicks to make something happen, they found a way to make it five. Where you should enter a date, they found a way to not allow special characters, like '/'. Where you should enter an address, well, no spaces allowed. Basic functionality is lacking for several features, but the interface is there.

      And no help files yet, despite beta release pending in a few days. In fact, though we have well over 1,000 pages of documentation, there seems to be no functional install that preserves the users' data in case they need to reinstall. I'm told that the next build introduces that.

      For all the fancy IDEs, tools, etc, these guys are still not getting it done. I dare not say how far behind schedule this is, nor what the actual platform is, or someone will guess and raise hell over how anyone could be so insensitive as to speak the truth.

      Your tools mean crap, if you're incapable. Just as your plumber would probably suck at actually making the pipe, your developers will suck if they don't 'get' what your users actually do.

      Of course, it would help if they asked what the users actually do.

      But I'm not bitter. I get to support this. Plenty of work.

      --
      deleting the extra space after periods so i can stay relevant, yeah.
    2. Re:Wow! by ClosedSource · · Score: 3, Insightful

      Well, I like some of those guys but as someone who has been closer to the bare medal than they have (I'm a former Atari 2600 programmer), I'd say that the habits of old pros say little about the quality of today's tools.

      We used 6502 cross-compilers on a PDPxx and VAX, not because we thought the command-line was better but because that was the best we had at the time.

      BTW, I'm not trying to say that I'm better or smarter than those other guys, I just have written very low-level, real-time code.

    3. Re:Wow! by __aasqbs9791 · · Score: 4, Interesting

      I just wanted to let you know I feel your pain. I worked at this place a while back and I really liked my job. It didn't pay that well, but I felt important and had a massive amount of freedom. Then they hired a consultant to come in and take over IT. He knew how to run a business, but next to nothing about IT (though he knew just enough lingo to fool people who did for a few days). His 'programmer' didn't understand how to navigate file systems on Windows with Perl (and was supposedly a Perl guy). Being a Linux guy myself, I figured maybe he was, too. No, he had never even used Linux. Once I found that out I started to get rather scared and discouraged, because he was reworking a complicated, arcane, mission-critical system. I demanded all passwords be changed and that I not be given any of them because I didn't want to be blamed when they screwed everything up (plausible deniability). After assuring me that they (my bosses) wouldn't, and finally relenting another month later they finally fired the guys because they couldn't get anything working. At all. I even told them where to start to get a feel for what they needed to be able to do on it, and they still couldn't do it. They didn't even know enough to mess it up (generally the easiest thing to do). So management's answer was to just not have any sort of IT department at all. I could do all of the old IT manager's job, plus my old one, for the same pay and no possibility for advancement. So I gave them a month's notice and left. Probably not the smartest thing I've ever done (the economy tanked about 6 months later) but since most everyone else had left or been laid off around the same time, I'm not sure how much a difference it would have made to do otherwise.

    4. Re:Wow! by roguetrick · · Score: 5, Funny

      Alright boys, take the love fest over to thedailywtf.

      --
      -The world would be a better place if everyone had a hoverboard
    5. Re:Wow! by gandhi_2 · · Score: 2, Funny

      In the Army, this is called "back when it was hard".

      In this context:

      How many developers does it take to screw in a light bulb?

      2: one screws it in, the other one talks about how hard it used to be.

    6. Re:Wow! by ducomputergeek · · Score: 3, Interesting

      Of course, it would help if they asked what the users actually do.

      Bingo.

      We had the advantage of a small business owner wanting our software developed because he thought "It should work like this". So we made it work like that and a lot of other small business owners found it to make sense and relatively easy to use. There were a couple quirks, but that's not good enough. Not for me.

      And this is where so many others fails. After the phase 1 deployment of our product (about 100 installs), I drove/flew around to our customers 6 months later, stopped by in person and asked as the first question: "What doesn't work?" followed by "How can it work better?"

      --
      "The problem with socialism is eventually you run out of other people's money" - Thatcher.
    7. Re:Wow! by Anonymous Coward · · Score: 0

      I think the quoted people are not against using IDEs in general, but are rather against using UML modeling and especially VPL:
      http://msdn.microsoft.com/en-us/library/bb483088.aspx

    8. Re:Wow! by Anonymous Coward · · Score: 0

      Hell, this applies to any profession, and even hobbies. Many times the "new thing" tends to sacrifice raw power for ease of use. Anyone who knows what they're doing is naturally going to shy away from anything like that meanwhile the newbies will love the shit out of it. It's just the way things work.
      Hell, I still pine for the good ole DOS days where if you knew your command line, you could get a computer to do whatever you wanted faster than your average person with a point and click interface.

    9. Re:Wow! by Anonymous Coward · · Score: 0

      I know our coders drag controls into our applications without understanding them, and without thinking about gui design or user experience.
      Elegant integrated code has been replaced with scrappy code written discretely for each click of the mouse.
      Similar functions on different forms has also encouraged our coders to duplicate code (and between different versions of .net).
      Size, speed and optimization are unheard of (especially when we get our SQL out of a book of syntax).
      I wish some of our guys would go on a course on how to programme, and not a course on how to use .net.

    10. Re:Wow! by Anonymous Coward · · Score: 0

      'bare metal'

    11. Re:Wow! by MemoryDragon · · Score: 1

      Actually I wont say that, I use low level tools most of the times, but if it comes to certain domains like simply db centric uis with some input masks I long for visual tools.
      Also I would never ever touch a tool again if I wont get refactoring support to some degree, software systems nowadays are so big that having built in refactoring is almost a must.

    12. Re:Wow! by Atrox666 · · Score: 1

      You know you aren't really a hardcore coder unless you write your code on punch cards...leaning against a mainframe..cutting holes with an Xacto knife.
      Progress always depends on proving the old guard's assumptions and methods wrong.
      McLuhan's terminology (borrowed from Joyce) they are sucked into the maelstrom.
      These people are victims of the new media not the drivers(or survivors) of it.
      The funny thing is, with all the motion capture work that has been done with video game programming, computers already ARE being programmed with interpretive dance. These fossils just have their heads so far up their asses they haven't noticed a few revolutions go by.
      Pretty soon these people will be as employable as a web designer who does everything in VI.

    13. Re:Wow! by Anonymous Coward · · Score: 0

      No wonder our webapp is so behind- you've got all my developers!

    14. Re:Wow! by ClosedSource · · Score: 1

      Thank you for your subtle correction.

    15. Re:Wow! by ClosedSource · · Score: 1

      Well, I think you go a bit too far.

      While the old guys are resistant to new ways of doing things, the new guys sometimes reinvent things that the "fossils" tried and abandoned years ago because they didn't work.

      I guess some lessons have to be learned the hard way.

    16. Re:Wow! by Blakey+Rat · · Score: 0, Flamebait

      No kidding.

      I suggest an alternate headline: "Old dogs have trouble learning new tricks!"

      Or maybe: "Members of the 'High Priesthood of Technology' hate it when programming becomes easier!"

      What really bugs me about old-school programmers saying this is it influences some of the younger guys, and they're frankly wrong. Except for the small amount of programmer doing kernel or embeddeded code, tools that manage their own memory are simply superior to those that don't. Tools that allow you to lay-out a GUI visually are superior to those that don't.

      In short, if you're a programmer at Microsoft, and one of these codgers is trying to talk you into giving up C# and going back to C++, you tell him to get off YOUR lawn.

    17. Re:Wow! by Blakey+Rat · · Score: 1

      There's lots of things that were abandoned because they didn't work that might work now.

      Wow, that sentence was confusing, sorry.

      But think of handwriting recognition on the Apple Newton and original Palm. Newton never got it working correctly (well, it was better in the later versions), and Palm could only get close by using a modified alphabet. Now turn on handwriting recognition on your Vista or Windows 7 tablet-- it's uncanny good, with no training at all. Turn on speech recognition-- same!

    18. Re:Wow! by Atrox666 · · Score: 1

      Wow it's almost like the right answer to problems comes from a balance and not any extreme. Why didn't I think of that.
      If microsoft was my company I would put all of these fuckers on a project to zero base CASE environments. If they want to be critical without being able to formulate a solution then I would fire them on the spot.

    19. Re:Wow! by Anonymous Coward · · Score: 0

      What?

      You don't know what these guys did. How can you say you have more experience in some area if you don't know everything they've done?

    20. Re:Wow! by terryducks · · Score: 1

      you forgot the 3rd guy ...

      YEA, this shit is HARD CORE !

      thing of beauty this is

    21. Re:Wow! by unclepauly · · Score: 1

      "Advanced developers who learned how to code on what would be considered bare bones IDEs" Anyone who learned to code on an IDE has no right to call themselves a developer let alone an advanced developer. If however, you learned to code using BRIEF or notepad.exe as your editor then you are entitled. I do agree though that bloat is finally being seen as a curse. http://www.computerworld.com/s/article/9136280/Opinion_The_end_of_bloatware_The_return_of_programming_s_golden_age_

    22. Re:Wow! by ClosedSource · · Score: 1

      Well, I do know the background of some of them. If you can present some evidence that they performed real-time assembly language programming that was time-accurate to a single CPU cycle, I will stand corrected.

    23. Re:Wow! by ClosedSource · · Score: 1

      I'm not talking about improved implementations but rather ideas that are fundamentally flawed.

      Besides, I can break any speech recognition engine with my raspy voice. My handwriting isn't anything to brag about either.

  3. So what? by Aphoxema · · Score: 3, Insightful

    I hate Microsoft more than anyone, but... I really don't see an issue or any hypocrisy here.

    --
    "Most people, I think, don't even know what a rootkit is, so why should they care about it?"
    1. Re:So what? by ceeam · · Score: 3, Informative

      That's because you weren't reading the ads - direct or indirect - of these MS "dev tools" (in magazines etc)

      And you haven't been affected by managers who were reading them.

    2. Re:So what? by Shakrai · · Score: 4, Insightful

      I really don't see an issue or any hypocrisy here.

      Yeah, really. Senior Engineers disagree with company marketing strategy and prefer to keep things simple. That isn't newsworthy -- that's a Dilbert strip ;)

      --
      I want peace on earth and goodwill toward man.
      We are the United States Government! We don't do that sort of thing.
    3. Re:So what? by gzipped_tar · · Score: 5, Funny

      I hate Microsoft more than anyone

      See, being subjected to IDEs has lowered your ability of detecting faulty code. You're basically saying A > A since this "anyone" includes "you" too. ;)

      --
      Colorless green Cthulhu waits dreaming furiously.
    4. Re:So what? by shutdown+-p+now · · Score: 5, Insightful

      Yeah, really. Senior Engineers disagree with company marketing strategy ...

      Who said that "graphical programming" is company marketing strategy today? Oh, sorry, it's another kdawson story; you expected any facts here? Let me explain then.

      Anyone who deals with .NET tools knows that there had been a recent shift back towards code. For example, WinForms development was too tedious without visual drag&drop form editor, but WPF markup is best hand-coded, just like HTML (VS provides a visual editor, too, but hardly anyone uses it for anything except quick preview). Or what used to be called "typed datasets" - also very designer-centric, but with LINQ2SQL and Entity Framework, again, most people stick to writing code and mappings in XML by hand.

      In fact, it's easy to find out that much if you just look up the names mentioned in TFA. For example, who is Don Box? He's working on Microsoft "Oslo" project, next-gen modeling platform which was hyped back on PDC2008, and all Microsoft managers in the division blogged on how it's the next big thing etc. And the main difference of that platform from the existing "DSL" tools in VS2008? Oslo is centered around text-based DSLs, and comes with a Emacs-like editor which can handle them.

      In short, developers of the new tools for Microsoft development platform - which are fully backed by marketing - criticize some aspects of the previous generation of tools. Surprise, eh?

      But go ahead and ask them what they use to edit C# code that they write, and I bet you'll hear "why, VS of course".

      Then there's Jeffrey's comment on .NET. I don't see anything fundamentally wrong with it, and if you RTFA, you'll see that he is an architect for PowerShell - a very high-level scripting/shell language built on top of .NET! To interpret his comment as a criticism of managed, when he is in fact the one "pushing" for it via the tech he works on, is rather disingenuous.

    5. Re:So what? by Duhavid · · Score: 1

      So, think critically.

      Their product offerings imply you should do things graphically, in CLR, etc, etc. Their internal experience is that these things are not all they are advertised as.

      --
      emt 377 emt 4
    6. Re:So what? by Anonymous Coward · · Score: 0

      Emacs-like

      Found the problem

    7. Re:So what? by cheekyboy · · Score: 1

      Ram is cheap and will get cheaper to the point of being so cheap, that you could afford
      to buy 500gigs of ram for the time it takes for that programmer to take shit on the toilet.

      So wind back to 1989. One hours of McDonalds labour earned enough for how much ram? ($60/meg) 64kbytes of ram?

      Today, that $12-$15 can buy 1Gig stick easy.

      2025, and it could be 15 tb ram for 1hours labour.

      Even $3 embedded devices will have 100s of meg ram to play with.

      --
      Liberty freedom are no1, not dicks in suits.
    8. Re:So what? by Anonymous Coward · · Score: 0

      Who needs ads when you've got Slashdot submarine articles?

      http://mobile.slashdot.org/story/09/11/28/1830214/A-Dual-Screen-101-Laptop-In-Time-For-the-Holidays

      (Can you believe that goddamn title?)

    9. Re:So what? by Shinobi · · Score: 3, Informative

      "Even $3 embedded devices will have 100s of meg ram to play with."

      As a rule, no they won't. SOME embedded appliances, marketed for homes and sheltered geeks will have that, because they have the luxury of being connected to the powergrid all the time. Embedded stuff that don't have that luxury will not, for power saving reasons. That's why there are still embedded devices that use 1980's bare-bone processors and less than 100KiB RAM.

    10. Re:So what? by Anonymous Coward · · Score: 0

      "more than anyone" is the new "as much as anyone" with some added emotion and a precise meaning of lowest higher bound. The writer of "I hate Microsoft more than anyone" is arguing his level of hate is the lowest higher bound of hate of all people. Correspondingly, the greatest lower bound of hate would be expressed by the statement of "I am Bill Gates".

    11. Re:So what? by gbjbaanb · · Score: 1

      RAM is cheap, but you can only stick so much of it in your motherboard that these is a practical limit, there is also a practical limit on 32-bit CPUs too. In addition, even if you have a 64-bit CPU with unlimited slots, and you use up 500Gig of your super-cheap RAM, how long would you expect your app to take to swap back (not forgetting Windows swaps program code to disk all the time), how long will it take just to load all that bloated code and data into RAM in the first place? How long will it take to iterate through pots of data you've stored in a mistaken attempt to 'optimise through RAM bloat'?

      the answer is simple - RAM may be cheap, but if you want to treat it as an unlimited resource and use it without care, your app will still be crap, even on a 500 Gig machine.

    12. Re:So what? by selven · · Score: 1

      Proof that A > A:

      A > A
      A > 10A / 10

      Let: A = 1.7

      1.7 > 17/10
      1.7 > 1.69999999848

      QED.

    13. Re:So what? by Anonymous Coward · · Score: 0

      Or even 1024 Bytes of RAM. I wrote a PWM motor controller, less than a year ago on an Atmel uC, with a fancy Serial interface with 1024 bytes and had tons of bytes to spare.

    14. Re:So what? by lennier · · Score: 1

      "You're basically saying A > A since this "anyone" includes "you" too. ;)"

      So.. he hates Microsoft so much he does an infinite recursion of Cantor diagonalisation every time he thinks of them?

      That's a lot of hate!

      --
      You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
    15. Re:So what? by uwnav · · Score: 1

      I like IDEs
      and I think you mean A > (A+X)
      ;)
      Anyway, I think the whole argument against IDEs is incompetent. It would be like "elite" graphics designers saying they'd rather design pixel by pixel in Paint vs. Photoshop.

      There is a spectrum of IDEs, from Notepad and vim to Visual Studio and Eclipse. It's a matter of preference, as to what you want to use. There are good and bad developers in the whole spectrum of IDEs

    16. Re:So what? by Anonymous Coward · · Score: 0

      You're basically saying A > A since this "anyone" includes "you" too. ;)

      Ah, but he's ACTUALLY saying A>[A+B], where B is "anyone else". Which makes sense if you use a negative value of B (which would be the opposite of hate - ie, love).

    17. Re:So what? by triorph · · Score: 1

      In fact, there are several microprocessors that offer FAR less than this that are still regularly used. The ATmega8 microprocessor has only 1KiB on the chip for example. It is very unlikely at all that you can find a 100MiB micro for only $3.

  4. pros and cons by gcnaddict · · Score: 1, Interesting

    The only pro: anyone can probably learn to write some sort of simple application through Microsoft's tools via managed code.

    The cons: managed code doesn't give nearly as much control because it tries to spoonfeed you. This is basically a catch-all for every con anyone can think of for managed code.

    --
    Viable Slashdot alternatives: https://pipedot.org/ and http://soylentnews.org/
    1. Re:pros and cons by sys.stdout.write · · Score: 4, Insightful

      C'mon, this is unfair. By your logic we shouldn't have Perl or Python or any other scripting language because they "[don't] give nearly as much control because it tries to spoonfeed you."

      There are lots of situations when you don't need to twiddle the bits or delete your own allocated memory. What's wrong with simplifying the language for simplified tasks?

      It's not like Microsoft doesn't support low-level languages.

    2. Re:pros and cons by sys.stdout.write · · Score: 5, Funny

      I just realized that I am now committed to the proposition that Perl "tries to spoonfeed you." I am not sure this is a good position to be in ;-)

    3. Re:pros and cons by Shakrai · · Score: 1

      What's wrong with simplifying the language for simplified tasks?

      Nothing. The problem comes when people try to use the simplified language for things that it was never intended to do. You wouldn't write the Linux kernel in Python, would you?

      --
      I want peace on earth and goodwill toward man.
      We are the United States Government! We don't do that sort of thing.
    4. Re:pros and cons by gzipped_tar · · Score: 1

      ...because they "[don't] give nearly as much control because it tries to spoonfeed you.

      #include "Python.h"

      --
      Colorless green Cthulhu waits dreaming furiously.
    5. Re:pros and cons by icebraining · · Score: 1

      Singularity is an experimental operating system being built by Microsoft Research since 2003. It is intended as a highly-dependable OS in which the kernel, device drivers, and applications are all written in managed code.

      http://en.wikipedia.org/wiki/Singularity_(operating_system)

    6. Re:pros and cons by Anonymous Coward · · Score: 0, Flamebait

      The key word here is experimental. As in it will never see the light of day other than to con people into thinking managed code can do more than it can. Which worked on you.

    7. Re:pros and cons by arth1 · · Score: 1

      What's wrong with simplifying the language for simplified tasks?

      Absolutely nothing.
      The wrongness occurs when well-meaning managers with a deadline think that because the environment is good for creating "foo", it is also good for "bar". And the fifty developers he already has hired aren't going to gainsay him and say "hey, boss man, perhaps it isn't a good idea to use Visual Whatever (substitute Java/Eclipse if needed) for developing real-time device drivers..."

      Using a duck typed object oriented and multi-abstracted environment to create something low level is as wrong as using Excel for its grid capabilities (e.g. to store phone lists). Both are common, and both are just plain wrong.

    8. Re:pros and cons by mysidia · · Score: 1

      Yeah, it tries to spoonfeed you... arsenic....

      No, i'm just kidding.. but it's a good idea to be careful about what you're actually getting fed, when your programming language is trying to feed you.. computers don't tend to be that intelligent, and they might be accidentally feeding you from the wrong jar :)

    9. Re:pros and cons by mysidia · · Score: 0, Troll

      No, but if you rewrote the Windows kernel and service APIs (kernel.exe, user32.dll, GDI, mstdc, svchost, kernel32.dll, advapi32, win32k.sys, comctl32, comdlg, shell32, shlwapi, Winsock, NetDDE, RPC, NetBIOS, Internet Explorer, etc) in Python, it might be faster, have fewer buffer overflows.

      Although i'm sure MS would still figure out some way of introducing security problems of some sort. Trade buffer overflows for kernel-mode Python code injection vulnerabilities.

      And since python is such an easier language to understand, python code injection in kernel mode is oh so much easier to exploit, even by novices...

    10. Re:pros and cons by Anpheus · · Score: 3, Funny

      http://www.codeplex.com/singularity

      Your words, I want to see you eat them.

    11. Re:pros and cons by Anonymous Coward · · Score: 0

      Troll? Drunk post? Serious post? The great thing about slashdot is one never can tell.

    12. Re:pros and cons by roguetrick · · Score: 1

      Will you spoon feed them to him?

      --
      -The world would be a better place if everyone had a hoverboard
    13. Re:pros and cons by shutdown+-p+now · · Score: 1

      Yes, and Java has JNI, and .NET has P/Invoke. So we're still back to square one (if one subscribes to the notion that Java and .NET are bad because of "spoon feeding", then so are Python, Perl etc).

    14. Re:pros and cons by ceoyoyo · · Score: 1

      Yeah, your argument was in trouble when you hit that point.

      Python can be used for spoon feeding too, but it doesn't have to be. A lot of low level networking geeks keep a Python interpreter handy because it makes it easy to hand assemble network packets.

    15. Re:pros and cons by gandhi_2 · · Score: 1

      There's a reason assembly wasn't written in Java. (:

    16. Re:pros and cons by Anpheus · · Score: 1

      With a side of Barrelfish, which is released under a BSD style license, if the academic, non-commercial license of Singularity left a sour taste in his mouth.

      I like to think of Microsoft Research as the pure heart to Microsoft's seething, burning exterior. Occasionally, perhaps by mistake, they let Microsoft Research produce something good and beautiful, and strangely, free.

    17. Re:pros and cons by jocabergs · · Score: 2, Interesting

      I think a lot of IDE's actually complicate the language though. When I do use the features, I end up having to go back in and rewrite 95% of the simple feature I just used at least 86% of the time. Another fear I have is that allowing to many non-schooled programmers into programming can really make it difficult when you have to try to figure out coding done by someone who doesn't have any conception of decent coding practices and naming conventions are. I do think that there are somethings which can be done more simply though, that being said; however, in the interest of some semblance of job security I'd prefer they not be too easy.

    18. Re:pros and cons by TapeCutter · · Score: 1

      "And the fifty developers he already has hired aren't going to gainsay him and say "hey, boss man, perhaps it isn't a good idea to..."

      They're not developers they're "yes men" and only a PHB would hire them, I've worked for some brilliant PM's over the last 20yrs, every one of them had the good sense to pretend he knew nothing about technical matters. I've also worked for some PHB's who didn't have to pretend, but only for as long as it took to find another contract.

      "Using a duck typed object oriented and multi-abstracted environment to create something low level is as wrong..."

      Be honest, have you ever tried to write, complie and debug x86 assembly with the MSVC IDE? - If so what is it that you found difficult/wrong about it?

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    19. Re:pros and cons by digitalunity · · Score: 1

      I would not want to see COM rewritten in python. I might hang myself from the rafters.

      --
      You can't legislate goodness. Let each to his own destiny, by will of his freely made choices.
    20. Re:pros and cons by wwahammy · · Score: 2, Insightful

      Managed code takes some control away from the developer but is the developer having that control for the best?

      For example, think of the type of errors leading to security bugs. A lot of them have to do with buffer overflows primarily in the area of string manipulation. These are easy mistakes to make in C or C++. Hell Microsoft and others have tried to modify the C runtime library to have "safer" versions of string manipulation functions because these errors continue to happen. Now consider a managed language like Java or C#. It's not possible to overflow buffers provided the buffer management code is sound. Instead of each mostly average programmer going through the process to manage buffers and reinventing the wheel, we have a few particularly talented people develop the code who specialize in that type of work.

      Also think about memory leaks. Firefox is a prime example of a great open source program developed in an unmanaged language. Probably thousands of people have looked at the code and still some of the most common complaints are memory leaks. My feeling as for why that would be is that C++ makes it so easy to forget to deallocate memory that with a million line program, its just too difficult to find every possible leak. A managed language never has that problem. We have a group of particularly talented people develop a garbage collector and memory management system and the average developer will never have to worry about it.

    21. Re:pros and cons by mysidia · · Score: 1

      I don't think you need worry about that much..

      It would take like 25 years to re-write COM in python, and that's a conservative estimate (in reality it would probably take much longer).

    22. Re:pros and cons by ardor · · Score: 2, Interesting

      But the GC does not solve two things:
      1) Freeing up resources other than memory (this is only possible with a deterministic GC and RAII/destructors, or with refcounting instead of a GC)
      2) Taking up tons of RAM because of unnecessary allocations (I've seen Java code that allocates MBs in tight loops...)

      --
      This sig does not contain any SCO code.
    23. Re:pros and cons by nurb432 · · Score: 1

      Personally i think there is a limit somewhere, where 'advanced tools' do get in the way. Stay below that threshold, it only helps.

      --
      ---- Booth was a patriot ----
    24. Re:pros and cons by TheLink · · Score: 1

      GC makes it easier. People can still screw up, but you are doing away with an entire class of too common mistakes.

      Using C is just like driving a manual without a clutch. It can be done, you just need to concentrate. One mistake and poof. So far there appear to be only a handful of people in the entire world who can write safe C. So far Dan Bernstein appears to write reasonably safe C and even he makes some mistakes ( http://www.jcb-sc.com/qmail/guninski.html )...

      Using Java/C# is like driving an automatic. And advanced "JIT" VMs are like those new high performance automatic transmissions - they can do better than most humans AND more importantly they are more consistent and reliable when doing it.

      FWIW, I wonder why it is common to push data onto an address stack. To me address = code. Mixing data and code ( addresses ) is bad hygiene. You should only do it in controlled circumstances, not as a norm. Why can't you have separate stacks? While there will still be problems, it will make certain bugs harder to exploit.

      --
    25. Re:pros and cons by kantos · · Score: 1

      But the GC does not solve two things: 2) Taking up tons of RAM because of unnecessary allocations (I've seen Java code that allocates MBs in tight loops...)

      I can't answer your first one because I would have do more research than I feel like doing at the moment, however your second comment makes me laugh, it is quite apparent that you like most programmers that I know of java, .net, and other managed languages don't understand the single most critical thing any programmer must understand about these languages. They are reference based meaning that every time you create a new variable you allocate more ram, however if you had defined the variable in a c style manner at the top of the block outside the loop then the memory is only allocated once.

      --
      Any and all content posted above may be ignored, considered irrelevant, or otherwise dismissed.
    26. Re:pros and cons by Blakey+Rat · · Score: 1

      It spoon-feeds you, then it kicks you in the crotch a week later when you're trying to figure out what the hell you were thinking when it was spoon-feeding you.

    27. Re:pros and cons by Blakey+Rat · · Score: 1

      I think a lot of IDE's actually complicate the language though.

      How do IDEs change the language whatsoever, much less complicate it? Are you saying that C# is a different language in VS than it is if you're hacking away at a text file?

      When I do use the features, I end up having to go back in and rewrite 95% of the simple feature I just used at least 86% of the time.

      Huh? Not making any sense of that sentence.

      Another fear I have is that allowing to many non-schooled programmers into programming can really make it difficult when you have to try to figure out coding done by someone who doesn't have any conception of decent coding practices and naming conventions are.

      I don't think schooling has anything to do with it. From my experience I get much more spaghetti code from schooled programmers than non-schooled.

      In any case, an IDE certainly won't HURT in this situation-- at least it has good refactoring tools to help clean up the mess.

      And it's not as if Mr. Spaghetti Code would have been any neater had he been using a text editor.

      I do think that there are somethings which can be done more simply though, that being said; however, in the interest of some semblance of job security I'd prefer they not be too easy.

      Fuck you.

    28. Re:pros and cons by jocabergs · · Score: 1

      apparently there was a parse error // private function sarcasm () was supposed to be public..

    29. Re:pros and cons by SanguineV · · Score: 1

      You still have time to define what kind of "spoon" and "feeding" is being done!

    30. Re:pros and cons by ardor · · Score: 1

      So where do you see that I don't understand that? Hm? btw: I do. Your conclusion is wrong. The code I mentioned wasn't mine. In fact, I was called to help fix the memory consumption problem, and spotted this peculiar loop.

      Next time, try to read postings correctly.

      --
      This sig does not contain any SCO code.
    31. Re:pros and cons by wwahammy · · Score: 1

      While you don't have separate stacks, all new processors have the NX bit that allows the OS to mark data as executable or not. This theoretically should prevent buffer overflows from succeeding. That said, it can break some old programs so I know in Windows, its only turned on for specific programs.

      My only guess for why there is one stack is that its just easier to manage. Granted another stack shouldn't be that much extra work though so maybe I'm totally off base.

    32. Re:pros and cons by bar-agent · · Score: 1

      You still have time to define what kind of "spoon" and "feeding" is being done!

      Too late. Now I'm having visions of a vampire dude spooning me with his fangs in my neck.

      Yeah. Thanks for that. You bastard.

      Gotta go. Need to get clean now.

      --
      i'd hit it so hard, if you pulled me out you'd be the king of britain [bash.org]
  5. Those onion belts are going bad by BadAnalogyGuy · · Score: 5, Interesting

    Yes, in some respects, programming is becoming easier and more unqualified people are able to do it.

    But I think that these guys are really missing the boat. The closer the programming environment can come to providing domain-relevant expression tools to the user, the better they will be able to create programs that fit their domain.

    In addition, content these days is a form of programming. Whether it is HTML/CSS or word processing or spreadsheets, the distinct line between what is a program and what is pure data is blurred beyond recognition. So a programming language for interpretive dance would probably find the Natal very useful.

    1. Re:Those onion belts are going bad by MBCook · · Score: 2, Insightful

      Wow. BadAnalagyGuy got an insightful. Someone didn't read the full comment.

      Of course, this isn't true. The thing about end users is, they generally don't know what they want. Even if they had a tool that would do whatever they say, it won't solve their problem because they don't know how to formulate it. The tool would need to read their mind, to the point of making something they didn't even realize they really wanted.

      --
      Comment forecast: Bits of genius surrounded by a sea of mediocrity.
    2. Re:Those onion belts are going bad by icebike · · Score: 1, Insightful

      The closer the programming environment can come to providing domain-relevant expression tools to the user, the better they will be able to create programs that fit their domain.

      Well said.

      Nobody does accounting better than an accountant.

      But its not always the best Idea to hand data system development to an accountant and hope for the best. Some one has to guide that guy doing the data editing, manipulation, and storage just like that guy has to guide the programmer how to keep his company books, file taxes, etc.

      And this is where the current crop of tools fail. They let you build things that can go horribly wrong, because of simple errors that a professional programmer might have caught. They are like a bag of wrenches being a substitute for a good auto mechanic. (Obligatory car analogy).

      We probably need better design tools, that can capture what it is the accountant wants in terms of inputs, outputs, retention, and quality assurance. Then the code cutting can be done by specialists, or generated code, as the situation dictates.

      --
      Sig Battery depleted. Reverting to safe mode.
    3. Re:Those onion belts are going bad by hughperkins · · Score: 1

      I felt BAG's post was pretty insightful to be honest. I feel that one could argue that the entire Facebook interface is a type of programming language in some ways. Not Turing complete admittedly. You can argue semantics over what is an isn't a programming language. My feeling is: if you can communicate to the computer something that you want done, and it does it, whatever the semantics that's a pretty cool thing to happen. Can Facebook users communicate what they want to do to Facebook? They seem to do quite well at that I feel. Does Facebook do roughly what they want as a result? Sometimes ;-) but more seriously: yes, I feel that Facebook does exactly what people want.

      The 'figuring out what people want' can be implicit in the design of the programming language, and I think that fits in fairly closely I feel to what BAG was saying in his post?

    4. Re:Those onion belts are going bad by cupantae · · Score: 1

      So a programming language for interpretive dance would probably find the navel very useful.

      There. Fixed it for you.

      --
      --
    5. Re:Those onion belts are going bad by MBCook · · Score: 1

      See that's the part of his post that I don't agree with at all, the 3rd paragraph. Word is not a programming language. It lets you markup text, but that's it. If you're talking about VBA, that's not Word, that's VBA. CSS doesn't begin to approach a programming language. Spreadsheets can be used that way, but they quickly become unwieldily.

      I don't see how anyone could call Facebook a programming language. Could you explain that part of your comment? You can move things around and post messages, but there is no programing to it. You are limited to what is pre-scripted for you. You can't go searching for people who went to your high school between the ages of 20 and 25 who are still single and live within 250 miles of you. You can't even conditionally format people's post (i.e. highlight a specific friend, unless he posts more than X a day).

      BAG's second paragraph I responded to in my comment, I simply disagree. The 3rd just seems like "how can I stretch stuff".

      I mean, you can't take "So a programming language for interpretive dance would probably find the Natal very useful." line seriously, can you? Even if someone made it, it would be like whitespace, just a joke. The energy required to make even a simple Hello, World would make it useless for anything.

      --
      Comment forecast: Bits of genius surrounded by a sea of mediocrity.
    6. Re:Those onion belts are going bad by Orion+Blastar · · Score: 2

      The reason why programming became easier is that it was really hard to teach college graduates and other people how to manage their own code, do software maintenance, garbage collection, memory management, error trapping, management of pointers, etc. So the programming languages evolved to support the lowest common denominator programmers that the colleges kept producing.

      In the 1980's when I first went to college for Computer Science, we got taught a whole lot of techniques and methods, that they don't teach in modern Computer Science classes. Back then RAM was expensive, so you tried to stay within a 64K limit and not reach beyond a megabyte with bank switching and other segmented memory systems. These days with 4G RAM systems, memory management is not even an issue and bloated code can run fast even on dual core processors. Back in the old days people would get fired, for what modern developers do in writing sloppy code, bloated code, and stuff that barely even passes QA testing.

      Part of the reason was that they offshored the work to third world nations, and took non-programmers and taught them programming so that they would work for the lowest labor costs. People that used to work in manufacturing plants and wanted a better paying job for their local economy, so $100 a month for factory work, and $200 to $300 a month for programming work. No way can the EU, USA, Canadian, etc programmer compete with that low a labor cost.

      After development of Windows, Macintosh, and basically the GUI became standard, easy to use became so wide spread that it developed to programming languages as well. BASIC was so easy for the non-programmer to learn that Visual BASIC caught on more than C++ and Pascal for Windows, and even managers can learn it, write code in it, and read what their employees wrote. The managers are but one set of non-programmers that the easier to use programming languages are made for. Yeah yeah I know Python, Smalltalk, and others are easy to use and easy to learn as well.

      --
      Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
    7. Re:Those onion belts are going bad by Toonol · · Score: 1

      I mean, you can't take "So a programming language for interpretive dance would probably find the Natal very useful." line seriously, can you? Even if someone made it, it would be like whitespace, just a joke. The energy required to make even a simple Hello, World would make it useless for anything.

      That was the only part of his post that was particularly insightful. You wouldn't use natal to program a hello world application. You would use natal to program a dancing avatar... and it would be very useful for that purpose.

    8. Re:Those onion belts are going bad by Spy+der+Mann · · Score: 1

      Recently I've joined a gigantic project involving Classic ASP and SQL Server.

      Te lead developer only knows to program using Dreamweaver.

      When I looked at the code, this is what I saw:

      • Tons of replicated files using dreamweaver templates.
      • All the javascript for more than 400 asp files (I'm not kidding!) is stored in only three different .js files.
      • All the asp files are in the same friggin' directory.
      • The javascript validations included which file to submit the form to (yes, they changed the action attribute!)
      • No sign of OOP or even modular programming.
      • The code for validating roman numerals using regexps used a different regexp like "([X]|[I]|[V]|[L]|[C]|[D]|[M])" for length-1 strings, "([X]|[I]|[V]|[L]|[C]|[D]|[M])([X]|[I]|[V]|[L]|[C]|[D]|[M])" for length-2, "([X]|[I]|[V]|[L]|[C]|[D]|[M])([X]|[I]|[V]|[L]|[C]|[D]|[M])([X]|[I]|[V]|[L]|[C]|[D]|[M])" for length 3, and so on. The whole code took over 30 lines of javascript code
      • Javascript comments in the .js files started with <!-- and SOMETIMES closed with --> (other times they're not closed at all! Imagine my dismay when the app broke after I searched-replaced them with decent /* and */ comments.

      I tried to make an automated dependency table on their giant blob monster attempt of a project by using grep and a graph-visualizing tool, but there were dozens of orphan files and isolated clusters which lead to absolutely nowhere (it was by analyzing them by hand that I realized lots of validation functions were in one same javascript file).

      When I asked the lead developer why he stored all the javascript in a single file instead of putting it in the same asps (they were all spaghetti anyway. It would've been much better to not mix them up with the .js files) he almost called me an idiot for not being able to "click" on the button on dreamweaver, read the function name, open the javascript and pressing ctrl-f for searching the function.

      The only reason I didn't lecture him on multi-tier programming and advanced grep tools was because he's the manager's star developer, and since the company hired our company for consulting, they're still above us in hierarchy and these matters need to be handled with tweezers. Had I been hired before, I'd have recommended my boss to ask twice the money.

      Anyway - If you want my opinion on automated GUI tools (at least for web projects), they only procreate idiots and promote short-term productivity. Of course, when something breaks, it won't be the idiot's fault. It'll be the guy in turn who happened to write perfectly-well-designed code that somehow triggered a hidden bug in the sacred-cow spaghetti code.

      BTW, if you want to know the idiot's name, his name is Josh. I won't mention his surname to protect the "innocent" (rofl), but at least his name will be preserved for posterity :)

    9. Re:Those onion belts are going bad by Anonymous Coward · · Score: 0

      Wouldn't keeping all the js in a single file allow for better client-side caching and an overall speedup of page loads as well as reduced network traffic?

      I'm not trying to say this guy knows what he's doing, but even a stopped clock tells the right time twice a day.

    10. Re:Those onion belts are going bad by gandhi_2 · · Score: 1

      what it is the accountant wants in terms of inputs, outputs, retention, and quality assurance. Then the code cutting can be done by specialists

      So what you do is you take the specifications from the customers and you bring them down to the software engineers?

    11. Re:Those onion belts are going bad by arth1 · · Score: 1

      The reason why programming became easier is that it was really hard to teach college graduates and other people how to manage their own code, do software maintenance, garbage collection, memory management, error trapping, management of pointers, etc. So the programming languages evolved to support the lowest common denominator programmers that the colleges kept producing.

      I.e. the teacher. Face it, Knuth is far beyond what most teachers can understand, not saying anything about understanding it well enough to actually answer questions in a meaningful way, or impart that understanding to others.

      And for the few teachers who do have the faculties to understand, and have willingly turned down jobs paying four times as much in order to teach, well, it doesn't make for a good career as a teacher if you have to flunk 80% of your students.

      So yes, what programming is taught in schools today is extremely dumbed down, to the point of being a near parody. You learn how to use certain tools, and how to implement easy-to-grok algorithms that others have already written into those tools. This is called programming. In the same spirit as assembling Ikea furniture makes you a carpenter.

      It's not for nothing that companies like Google asks "strange" questions to job applicants. The paper from a school doesn't tell much about aptitude or ability, which aren't required to pass, or even to get good grades.

      The other day, I overheard a programmer telling another that profiling was important, "because it is impossible to know where the bottlenecks will be before the code runs". With that level of understanding in programmers, yes, we do desperately need IDEs that do as much of the job for them as possible.

    12. Re:Those onion belts are going bad by Orion+Blastar · · Score: 1

      I agree with you. For friends and family members going to college, I had to tutor them in programming and even debug their programs as their Computer Science professors didn't know how to teach it, and had no clue how to debug a program.

      I even once considered being a college professor for computer science, but like you said flunking 80% of your students because they cannot grasp the concepts I talked about would look bad. I'd have to make some sort of "extra credit" projects in that students will write essays on what programming and computer science means to them to add 10 or 20 points to their grade if they do a good enough job, don't plagiarize someone else's works, and cite their sources. But some English professors I talked to said that today's student cannot even do that properly.

      --
      Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
    13. Re:Those onion belts are going bad by mhelander · · Score: 3, Interesting

      There's truth to what you are saying - I'll bet any senior developer can tell war stories for hours on the topic of users who don't know what they want - but BAG's comment was still very insightful.

      Despite how readily domain experts (that is, our customers) disappoint us when it comes to grasping the most basic stuff such as C, Java, SQL or even HTML, it is a mistake to think that they are stupid or that they don't know *their* domains very well (the most basic stuff of which we may then find ourselves struggling to come to terms with). Domain experts already express themselves very precisely using their own notations - but they normally lack any decent tool support for this. In practice, they may write formulas in word or excel. Now think about what BAG wrote for a moment:

      "The closer the programming environment can come to providing domain-relevant expression tools to the user, the better they will be able to create programs that fit their domain."

      If, as BAG suggests, they were to have richer tools supporting their domain relevant expressions, perhaps including things we coders take for granted in our IDEs such as type checking, code completion, refactorings, etc - wouldn't the result be that domain experts could express themselves even more efficiently and precisely? Wouldn't the end result tend to be software better suited to address their specific problem domains?

      Are they "writing programs", though? Well, are you writing a program when you're typing in interface declarations, or only when you type in imperative method implementations? If you are ready to agree that declarative code can also be code then you pretty much agree with where BAG is going when he says that "the distinct line between what is a program and what is pure data is blurred beyond recognition". If you can generate a full application from a set of formal, domain specific expressions - are not those domain expressions the source code, and aren't those people editing that source code (even if they happen to be the domain experts) programming?

    14. Re:Those onion belts are going bad by mhelander · · Score: 1

      "So what you do is you take the specifications from the customers and you bring them down to the software engineers?"

      No, you take the processable specifications from the customers and generate the application code directly from them. The software engineers write the code generators and perhaps the tools for capturing the processable specifications - including, as icebike wrote, tool support for helping the accountants (say) developing and maintaining their specifications, such as validation, syntax highlighting and code completion.

    15. Re:Those onion belts are going bad by gandhi_2 · · Score: 1
    16. Re:Those onion belts are going bad by fwarren · · Score: 1

      Amen!

      I have been programming since the early 80's. Recently lost my job and found a training program that will let me attend college to get a degree to help me find better paying work.

      There are 3 terms of programming. Term 1: Intro to Programming with Visual Basic 2008, we cover chapters 1 to 4 in 10 weeks. Term 2: Visual Basic, where we spend 10 weeks to cover the next 10 chapters. Term 3: Automating MS Office with Macros.

      I kid you not, it took 4 weeks to get to variables. Took to week 8 to get to using an IF statement. The first program that actually involved performing any real calculations was a little program that you could enter grades with and it would track the totals for the class. We lost 10 students, 1/3rd of the class over that assignment.

      I am not sure the college could find a worse text to teach from.

      --
      vi + /etc over regedit any day of the week.
    17. Re:Those onion belts are going bad by Draek · · Score: 1

      Back in the old days people would get fired, for what modern developers do in writing sloppy code, bloated code, and stuff that barely even passes QA testing.

      Back in the old days, businesses hired a dozen experienced professionals to write stuff that today is given as an assignment to first-year software engineering students.

      Its not that new programmers do the same things with less work, its that they do more for the same amount of work. They're not lazy, its just the "old ways" are inefficient.

      --
      No problem is insoluble in all conceivable circumstances.
    18. Re:Those onion belts are going bad by mhelander · · Score: 0, Redundant

      "Word is not a programming language."

      When you type text into Word, it is parsed. Your words are turned into tokens which are checked against the list of valid symbols (the dictionary) and then interpreted as sentences that are analyzed for grammatical inconsistencies which, if found, are highlighted. All this is done in much the same way as static code analysis helps you in your favorite IDE.

      "CSS doesn't begin to approach a programming language."

      Why - because it is (as far as I know, I'm no CSS expert) declarative?

      "Spreadsheets can be used that way, but they quickly become unwieldily."

      Yes they do, that much we can agree on, but you can't say BAG isn't right. Seeing spreadsheets used this way isn't uncommon at all.

      I think hughperkins is right to observe that the question of what we call programming is mostly semantics. But since you are making an argument saying we shouldn't call certain things programming, it makes me curious as to why, and what your requirements are. Using a General Purpose Language (GPL)? Adding the constructs to turn something such as a domain specific language (DSL) from a non-GPL into a GPL is pretty easy. Very simple languages can be GPLs, while at the same time a non-GPL DSL can be quite sophisticated, so using a GPL by itself would seem a bad candidate for what constitutes "real" programming.

      (Btw, I have no idea about facebook, but are you saying that the language in question is not a GPL? Or is it the API you are complaining about?)

      If using a GPL isn't enough for "real" programming, then what? Using a GPL with good library support? How good library support? What are the essential libraries? Is I/O among them? If so I guess you don't count a pure, side effect free Functional Programming (FP) language as a "real" programming language? Must the programs be imperative, rather than declarative? Again, that cuts pure FP out...

      If you object that it is hard to draw the line, well, of course this is exactly my point.

      And if we can't draw the line in any useful way, but you still want to argue that people aren't actually "programming" when what they're doing is somehow sufficiently less sophisticated than what you're up to, then what's to stop someone who's doing something even more complicated than you, in an even more sophisticated tool, from proclaiming that what you're doing isn't "real" programming?

    19. Re:Those onion belts are going bad by mhelander · · Score: 1

      I have seen the movie. I'm not sure what your point is? If they had some project in there related to processable specifications, it doesn't ring a bell (but it was a while since I saw it).

      Or is your point somehow that people (especially with power) are so lazy and stupid, as they are generally depicted in that film or in Dilbert, that any ambitious project is doomed to instant failure? In that case I guess I have been lucky, but I've seen a lot of projects go well because they involved bright and enthusiastic people, both customers and developers. Dilbert/Office Space isn't the only reality out there.

    20. Re:Those onion belts are going bad by vegiVamp · · Score: 1

      So you're saying users don't know what they want ? Gosh, that never occured to me *cough*

      --
      What a depressingly stupid machine.
    21. Re:Those onion belts are going bad by gbjbaanb · · Score: 1

      that's because today's stuff contains libraries that include the things the old timers wrote. No-one needs to write another sort algorithm 'cos its done and is part of the API now. That's the difference, its not that the old ways were inefficient (quite the opposite) but the new guys are standing on the old guys shoulders.

    22. Re:Those onion belts are going bad by HR · · Score: 1

      I agree with you that MS Word is not a programming language. However, it seems to me that you are conflating the concept of a general purpose programming language with that of a programming environment that BAG is talking about. He specifically refers to "domain-relevant expression tools" as a description of the programming environment.

      Expressing a domain concept can be as simple as drawing figures on the screen *for a drawing program*. A drawing DSL or a robotic control DSL, for example, is not intended to be used for writing "Hello, world" on the screen!

      I think we all can agree that you should use the right tool for the task at hand. In this context, that means choosing the right level of abstraction. Trying to write a Facebook application in Assembly language is just silly. Is Facebook a general purpose programming language? Of course now. However, it certainly does provide a programming environment.

    23. Re:Those onion belts are going bad by Blakey+Rat · · Score: 1

      So a programming language for interpretive dance would probably find the Natal very useful.

      Apologies to the poster in the previous thread whose idea I'm stealing...

      But considering how much use there is of motion capture technology for movies, TV shows, and video games, there most certainly are computers being programmed right now this instant via "interpretive dance."

    24. Re:Those onion belts are going bad by Blakey+Rat · · Score: 1

      All you're saying is "bad programmers can make a spaghetti mess in an IDE." Since we already know that bad programmers can make a spaghetti mess using plain editors, I guess all that leaves is:

      "bad programmers make a spaghetti mess."

      You've said nothing about IDEs. Except that they have search features, I guess, but it you couldn't search using your plain editor, it sucks.

    25. Re:Those onion belts are going bad by gandhi_2 · · Score: 1

      The scene where the consultants figure out the one guy (the jump to conclusions guy) just takes the specs from the customer and gives it to the engineer. Or actually not even that.

      which just reminded me of

      what it is the accountant wants in terms of inputs, outputs, retention, and quality assurance. Then the code cutting can be done by specialists

    26. Re:Those onion belts are going bad by lennier · · Score: 1

      "The thing about end users is, they generally don't know what they want."

      I don't think so. The definition of end users is that they know what they *want* - they just don't necessarily know how to *achieve* it given the tools at hand. They are neither dumb nor confused nor a lesser species. They simply have different goals and domain expertise than you. They don't understand the foundations of the computer system because it's not their job to - their job is to get stuff done, and the computer either assists or obstructs this. If it obstructs, it is an error which needs to be fixed.

      Also, EVERYONE is an end user to some process, and the provider for another.

      --
      You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
    27. Re:Those onion belts are going bad by Falconhell · · Score: 1

      Hmmmm, tricky....Can you explain that with a car analogy?

  6. I agree by Orion+Blastar · · Score: 0, Troll

    because the modern Microsoft development tools need that infernal Dotnet library to be loaded and then when it gets messes up any software that depends on it does not work.

    So instead of Visual C++ use GNU C++ or Borland C++ to write the Windows code to do what you want because it does not depend on the Dotnet libraries.

    Also when you use the alternative development tools, you can write code for older versions of Windows like Windows 95 and Windows 98. Yeah I know Microsoft doesn't want to support them, but people still use them in mass numbers because they cannot afford to upgrade.

    I still get job offers for Visual BASIC 6.0 and under, due to "Legacy Software" on "Legacy Windows Systems" because the Dotnet versions of Visual BASIC don't work to well on older systems. I could even write books on the subject.

    When I researched the Visual BASIC.Net 2002 development tools in beta I noticed those problems and my employer thought I was crazy. They moved on to Dotnet without me, having fired me for getting sick on the job and I eventually ended up so sick from the stress that I ended up disabled. I went on short-term disability for a while, tried a few more jobs, but ended up on disability. But the Visual BASIC.Net 2002 was full of bugs and I saw the dependence on Dotnet to be a liability. I knew this from when we used the WANG ImageBASIC controls and with IE 5.0 they stopped working and with MS-Office upgrades they broke the ImageBASIC Controls. We replaced them with Leadtools later. But Dotnet is huge and bloated and full of stuff most developers don't need but is loaded anyway. In creating Dotnet, Microsoft put many of the OCX and library control people and companies out of business as Dotnet replaced their controls.

    --
    Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
    1. Re:I agree by Anonymous Coward · · Score: 2, Funny

      When I researched the Visual BASIC.Net 2002 development tools in beta I noticed those problems and my employer thought I was crazy. They moved on to Dotnet without me, having fired me for getting sick on the job and I eventually ended up so sick from the stress that I ended up disabled. I went on short-term disability for a while, tried a few more jobs, but ended up on disability.

      Wow! I never thought I'd see a "crappy Microsoft software made me disabled!" post on Slashdot. Though I guess it shouldn't come as a surprise to me.

    2. Re:I agree by 0123456 · · Score: 5, Interesting

      because the modern Microsoft development tools need that infernal Dotnet library to be loaded and then when it gets messes up any software that depends on it does not work.

      Indeed. One of my PCs has a broken '.Net framework' which can't be fixed without a complete reinstall of the operating system: even Microsoft's own 'completely obliterate every last trace the bloody thing' uninstaller isn't enough to remove all the traces which prevent it from reinstalling properly. As a result, a lot of new software simply will not run.

      Fortunately I do most of my useful work on Linux or Solaris these days so not being able to run random Windows software is no big deal, but '.Net' is such a monstrosity that it makes 'DLL Hell' look good in comparison; if even Microsoft can't fix it when it breaks, what chance do users have?

    3. Re:I agree by Anonymous Coward · · Score: 0

      Visual C++ 2008 does not require you to use .NET, it can use the plain old Win32 API just like every version before it. For C++, at least, .NET is optional.

      Visual C#, however, requires .NET because it was created specifically to be the premier language for .NET development, and VB was forced over to .NET because VB was always a bit of a baby language and .NET makes things even simpler.

    4. Re:I agree by Orion+Blastar · · Score: 1

      Actually BASIC and Visual BASIC are beginner languages. The B in BASIC stands for beginners. Not a "baby" language. You can still get things done in Visual BASIC but you don't have the control or memory management of C++ or C#.

      I never used the Visual C++.Net languages, so I didn't know that. I usually use Turbo C++ for MS-DOS, or Borland C++, or even GNU C++ or MINGW C++ or C++ with Cygwin instead. I don't really see a need for a MS-C++ anymore when there are FOSS alternatives or cheap alternatives as in Turbo C++ and Borland C++ etc.

      --
      Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
    5. Re:I agree by Anonymous Coward · · Score: 0

      Wait. Wait. Wait. You're saying that people who "can't" afford a $50 per seat volume license for a new OS can afford to buy new software written for the old OS? And you expect to make a profit off of those people? Let me know how that works out for you...

    6. Re:I agree by Anonymous Coward · · Score: 0

      Yes, people often forget that BASIC stands for "Beginners' All-purpose Symbolic Implementation Construct".

      How such a language became the defacto standard language of business is mind boggling.

    7. Re:I agree by Orion+Blastar · · Score: 1

      Actually the stress was from management and coworkers, which the stress from Dotnet language was nothing compared towards. Everything was fine at my job, until I got mentally and physically sick, and then I was discriminated against until I kept getting sicker and sicker and eventually fired for being too sick.

      I remember these words:
      "Programmers are a dime a dozen. We get 500+ resumes a week for your position alone. We can easily hire a programmer who won't get sick on the job for a fraction of what we pay you." after that I was fired and escorted out by a security guard and my programming books and other property got mailed to my old address and I had to hunt it down to get it back. You'd think they'd use my new address instead of the old one, as my paychecks were mailed to my new address not the old one.

      But it wasn't VB.net alone that made me sick, I want to clarify.

      --
      Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
    8. Re:I agree by Cyberax · · Score: 2, Informative

      WTF?

      VisualStudio supports plain old C++. In fact, the new MSVS it's THE BEST editor for plain old C++, with the best autocomplete and refactoring support for C++ which exists in this Universe. I routinely write kernel-mode code in it, for example.

      Some features like online C++ error checking are simply unique.

    9. Re:I agree by evilviper · · Score: 4, Informative

      Many companies aren't big enough (or use Windows extensively enough) to get a volume license. And besides that, the significant cost is not the license, but replacing the hardware, and all the man-hours of work getting all the old apps up and working again.

      Windows 9x will remain for many years to come, on business PCs with modest needs. And yes, there periodically need to be new programs written, as well as several old programs maintained.

      --
      Slashdot gets worse every day... Pipedot: News for nerds, without the corporate slant
    10. Re:I agree by Anonymous Coward · · Score: 0

      Visual C++ 2008 does not require you to use .NET, it can use the plain old Win32 API just like every version before it. For C++, at least, .NET is optional.

      Visual C#, however, requires .NET because it was created specifically to be the premier language for .NET development, and VB was forced over to .NET because VB was always a bit of a baby language and .NET makes things even simpler.

      I Knew there was a reason i wanted to upgrade from vs2003 to 2008.

      Against the grain, I don't develop professionally. I use what bit of programming skills i have to slap together widgets and apps for my own use, and have found .net to be "somewhat useful" in the same sense that java's swing is. Bloated and huge, and a bit of a pain to remember all the crap it can do/does but bits of it are handy.

    11. Re:I agree by jpmorgan · · Score: 4, Informative

      Huh? If you don't want .NET, don't use a Managed C++ project, use a native C++ project. You can control exactly what libraries are included, and no, it doesn't include .NET libraries by default. I'm not sure how you can claim to know anything about Visual Studio, if you don't know this.

    12. Re:I agree by geminidomino · · Score: 1

      I remember reading that it was "Beginners' All-purpose symbolic instruction code" (this is in one of my dad's old programming books when I was a wee lad. I'm surprised I even remember it)

    13. Re:I agree by Anonymous Coward · · Score: 0

      Boohoo.

    14. Re:I agree by Anonymous Coward · · Score: 0

      I've worked with .NET from the beginning. I can't recall ever seeing a "broken '.Net framework'" install. I can't recall ever having to reload Windows to fix a .NET problem. Not sure what you guys are working on; maybe .NET isn't the right choice some applications. However, I think it's good enough for business application development (i.e. reading/writing data from/to a database; web services; asp.net; etc.). Maybe you everyone here is working on avionics systems or Cmd. Data androids :) ?

    15. Re:I agree by Orion+Blastar · · Score: 1

      As I said I don't use Visual C++, only Visual BASIC. I use a different C++ compiler than Visual C++ so there is no need to buy Visual C++.

      I never said I knew everything about Visual Studio, quit putting words in my mouth.

      --
      Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
    16. Re:I agree by Anonymous Coward · · Score: 0

      So instead of Visual C++ use GNU C++ or Borland C++ to write the Windows code to do what you want because it does not depend on the Dotnet libraries.

      Perhaps this is the line that he was confused about... It seems pretty clear that you imply using Visual C++ requires that you depend on the DotNet libraries (which you argue in your reply isn't the case). Perhaps you out to look at the words that came out of your mouth as well as those that are still in it...

    17. Re:I agree by Cwix · · Score: 1

      IT program Im in focuses on xp environments, we are told often (Only been in school for about a year, and Ive heard it at least 20 times.) that we should expect to see older operating systems and computers. Most of the businesses in my area have switched to XP at least, so my school teaches based upon the needs of local businesses.

      --
      You are entitled to your own opinions, not your own facts.
    18. Re:I agree by Anonymous Coward · · Score: 0

      Between this and your claims of discrimination in the last story, you sure do seem to love playing the victim. And seeing as how you pulled out all that discrimination crap due to a wee little AC post, I'm inclined to think that you over-exaggerated this whole thing, too. You probably got fired because you were a shitty employee. But you would never own up to any fault of your own. It's always someone else "discriminating" against you.

    19. Re:I agree by Orion+Blastar · · Score: 1

      Yes I agree it wasn't written that well. I had forgotten about Visual C++ can write code without Dotnet when I wrote it. I did later write that I didn't even use Visual C++.Net because I use other C++ compilers. I wrote a correction later, which was ignored by the poster.

      --
      Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
    20. Re:I agree by David+Jao · · Score: 1

      Indeed. One of my PCs has a broken '.Net framework' which can't be fixed without a complete reinstall of the operating system: even Microsoft's own 'completely obliterate every last trace the bloody thing' uninstaller isn't enough to remove all the traces which prevent it from reinstalling properly.

      Did you try Aaron Stebner's .NET cleanup tool? It's not an official MS product but it's written by an MS dev. I had a system with the same problem, and the cleanup tool fixed it.

    21. Re:I agree by libkarl2 · · Score: 1

      "Programmers are a dime a dozen. We get 500+ resumes a week for your position alone. We can easily hire a programmer who won't get sick on the job for a fraction of what we pay you."

      For future reference, those are walking papers.

      I was given an equivalent song and dance once also (back in 2003). I had my resignation turned in in less than 30 minutes. Hated to do that, but at least I wasn't abandoning an important project at the time, plus I didn't want to be walked out by security. Later that month, four other devs followed suit.

      --
      You are where you are at the time you are there.
    22. Re:I agree by Orion+Blastar · · Score: 1

      Not what the discrimination lawsuit that I won said.

      --
      Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
    23. Re:I agree by Anpheus · · Score: 1

      Lucky day for you, Visual C++ express is free, if you wanted to take it for a spin.

      Yeah, you can buy it, but buying Visual Studio from Microsoft is for chumps. You either use the express if you're new, or you requisition it at work. :) ... Come to think of it, that applies to a lot more Microsoft stuff than just Visual Studio.

    24. Re:I agree by Spy+der+Mann · · Score: 1

      I've worked with .NET from the beginning. I can't recall ever seeing a "broken '.Net framework'" install. I can't recall ever having to reload Windows to fix a .NET problem.

      Perhaps not reloading Windows, but pretty close: Try installing SQL Server 2005 one of these days. The .NET framework 2.0 conflicts with .NET 3.51, .NET 2.01 and refuses to install. You need to uninstall ALL your current versions of .NET, install SQL Server 2005, reinstall them and pray that everything goes fine.

    25. Re:I agree by colfer · · Score: 1

      That tool helped fix two WinXPs for me that would not complete Windows Update. So I'd say it's a common problem, because I don't administer that many PCs. Fuller instructions here.. Even with the tool, you're looking at a minimum 30 minutes of uninstalling, typically, 4 versions of DotNet, and reinstalling them, requiring several reboots. If you don't reinstall them all, who knows what installed software will no longer run.

    26. Re:I agree by Volguus+Zildrohar · · Score: 2, Informative

      I've installed SQL Server 2005 multiple times in the last few weeks (setting up different OS's in VMs), and each time I've installed it on machines with .Net 3.5 installed. There is no conflict, and the installer does not even try to install .Net 2.0, because it's already there. You're doing something wrong.

      --
      When confronted with one problem, some think "I'll use recursion". Now they are confronted with one problem.
    27. Re:I agree by bertok · · Score: 1

      because the modern Microsoft development tools need that infernal Dotnet library to be loaded and then when it gets messes up any software that depends on it does not work.

      Indeed. One of my PCs has a broken '.Net framework' which can't be fixed without a complete reinstall of the operating system: even Microsoft's own 'completely obliterate every last trace the bloody thing' uninstaller isn't enough to remove all the traces which prevent it from reinstalling properly. As a result, a lot of new software simply will not run.

      Fortunately I do most of my useful work on Linux or Solaris these days so not being able to run random Windows software is no big deal, but '.Net' is such a monstrosity that it makes 'DLL Hell' look good in comparison; if even Microsoft can't fix it when it breaks, what chance do users have?

      A lot of that comes from badly written fragile apps doing stupid things like writing entries into the "machine.config" file, or depending on things that aren't guaranteed. Oracle and any apps that depend on their client come to mind, it does horrible things to the .NET framework config files. I see the same all the time with Java apps as well, it's not unusual to see even a "point release" of the JRE break apps.

      On the other hand I have written (and seen third party) apps for .NET that have worked consistently well across 3 operating system releases (2003/XP, 2008/Vista, 2008 R2/Windows 7), and 3 major .NET revisions (2, 3.x, 4), AND a change from 32-bit to 64-bit without any significant changes. That's not bad. Meanwhile, there are traditional C++ apps that will fall over if you look at them the wrong way.

      Then again, Windows 7 actually contains a "stealth" release of .NET: 3.5.1. It's not the same as 3.5 on Vista or earlier. Developer tools target "3.5" as if it was a single platform, but it's not, there are two slightly different point releases. It broke VMware's vCenter client, among other things.

    28. Re:I agree by Anonymous Coward · · Score: 0

      I more say many companies are run by idiots.

      Too small for volume license? Check the volume license PROGRAMS - some target REALLY small companies. Some target mid size to larger companies. I find it cost effective starting with about 2 developers or 5 normal users ;) No joke.

    29. Re:I agree by Helen+O'Boyle · · Score: 0, Offtopic

      Wow! I never thought I'd see a "crappy Microsoft software made me disabled!" post on Slashdot.

      (Puts hand up) Never, really? You haven't spent as much time marking up Word documents with bold, italic and other random tags, or working with people who have, as I have, then. Multiple people doing similar work on a crunch project would go home at the end of the night after about 14 hours, hands/fingers/wrists too sore to continue, because the actions required to highlight text accurately in MS Word either by keyboard or mouse are hard on one's hands and wrists.

      Yes, day after day of 14 hour days or longer will be hard in any tool. But I've been able to work in various text editors (programming or doing similar document markup) for similar long stretches without coming home with hands so cramped that I couldn't even pick up a bowl to make soup. The experience reinforced two things I knew already.

      (1) Just because a tool CAN do something, doesn't mean that that tool SHOULD be used to do it.

      (2) The easiest tool to learn how to use passably enough for casual work is often not the best tool for intensive repetitive work.

      Epilogue. The company eventually developed a tool to replace Word, which did not require engineers to perform extensive visual markup for bold, italics, etc. Sounds good, eh? The tool is based on Word. It requres extensive semantic markup which is used by a back-end process that replaces the semantic markup with visual markup. Lots of smart decisions were made by the managers who ran this project. Using Word as an XML editor (and requiring that files contain all of the Word XML overhead, thereby making it next to impossible to use any other tool to edit the XML) was not, IMHO, one of them. Really, I understand vendor lock-in as a marketing strategy, but for an internal tool?

      Company name omitted for obvious reasons.

    30. Re:I agree by elnyka · · Score: 1

      Actually the stress was from management and coworkers, which the stress from Dotnet language was nothing compared towards. Everything was fine at my job, until I got mentally and physically sick, and then I was discriminated against until I kept getting sicker and sicker and eventually fired for being too sick.

      I remember these words: "Programmers are a dime a dozen. We get 500+ resumes a week for your position alone. We can easily hire a programmer who won't get sick on the job for a fraction of what we pay you." after that I was fired and escorted out by a security guard and my programming books and other property got mailed to my old address and I had to hunt it down to get it back. You'd think they'd use my new address instead of the old one, as my paychecks were mailed to my new address not the old one.

      But it wasn't VB.net alone that made me sick, I want to clarify.

      So what the hell did you include that for, in a post regarding DotNet?

    31. Re:I agree by Richard_at_work · · Score: 1

      Thats utter bollocks - the first thing I do when I install a Windows server is update .Net to the latest version, being 3.5 SP1 these days, and I've installed enough SQL Servers in the past 6 months to know that what you claim is a total fabrication, as SQL Server goes on after the .Net updates.

      SQL Server 2000, 2005 or 2008 have no problems installing onto a Windows Server 2003 R2, 2008 or 2008 R2 system with .Net 3.5 SP1 already installed on it. You are talking utter shite.

    32. Re:I agree by TheDarkMaster · · Score: 1

      I agree with you. The big, fat, ugly problem with the actual MS Studio is the STUPID .NET framework. Bloated, installs files on all the system, the installer is a FUCKING MESS unable to deal with any single error. And if the damn thing looses some obscure file or registry entry, you are doomed... Because the dammed thing do not uninstall, cannot "repair" and reinstall never works because the ridiculous installer. Is a hell.

      --
      Religion: The greatest weapon of mass destruction of all time
  7. On the other hand by earnest+murderer · · Score: 1

    You don't have to be a crack programmer or have a team of them to publish great software on a deadline.

    Yes, it helps. A lot. And in a serious large scale development effort you want as many as you can get...

    But it's good to be able to be useful without having to be elite.

    --
    Platform advocacy is like choosing a favorite severely developmentally disabled child.
  8. and this is a good thing by lapsed · · Score: 1

    I use Visual Studio because I couldn't program my way out of a wet paper bag. I'd be a bit concerned if the people writing the application were similarly impaired.
    VB.NET and Microsoft's other tools make programing possible. People on slashdot will argue that this leads to bad applications, but the choice is between bad applications and no applications, not bad applications and good applications. Granted, sometimes bad applications are dangerous, but that's not a sufficient rationale to withhold these types of tools.

  9. elitist morons by timmarhy · · Score: 3, Funny

    so MS has elitist morons in their ranks as well, how is this news?

    --
    If you mod me down, I will become more powerful than you can imagine....
    1. Re:elitist morons by martin-boundary · · Score: 1

      so MS has elitist morons in their ranks as well, how is this news?

      You have to shout "start" to shut them up?

    2. Re:elitist morons by Anonymous Coward · · Score: 0

      "so MS has elitist geniuses in their ranks as well, how is this news?"

      There, fixed that for you.
      Credit where credit is due ;)

  10. I don't care what the MS Developers use by denalione · · Score: 2, Insightful

    It does not affect my decisions at all.
    Businesses aren't in business to push programming ideology. They are in business to make money. If I need an application I'm going to get the application that does the job for the least amount of money (all the caveats about it not being poorly written and being moderately open to possible future expansion, etc.. apply). If I need bare-metal code then I'll get a guy to do that. If VB will do the job then I'm going to get a guy to do that and probably a bit cheaper. I don't care what the language is. I care that the problem is solved adequately for the least amount of overhead possible.

    1. Re:I don't care what the MS Developers use by 644bd346996 · · Score: 0

      You're on the wrong forum. This is developers.slashdot.org. You don't write the code, so you shouldn't have to worry too much about what language or platform it is. (And if you do, the programmers working for you will probably hate your PHB-style micromanaging.)

      To those of us who do write code for a living, this kind of thing is very interesting and relevant. If even Microsoft's hired geniuses don't like Microsoft's tools, then one can infer that there are very few programming geniuses around that would like Microsoft's tools, and so anybody who does like Microsoft's tools is extremely unlikely to be a superstar coder (or else they are so inexperienced that they don't know anything else - either way, they are worth far less than a true superstar coder).

      There's also the fact that user interfaces that can't accommodate expert users also tend to cramp intermediate users as well, just in less obvious ways. The fact that the best coders in the business can't stand Microsoft's tools strongly suggests that they are sub-optimal for the run-of-the-mill programmers, too.

    2. Re:I don't care what the MS Developers use by Anonymous Coward · · Score: 2, Informative

      Nice strawman argument, but this is simply a case of old dogs vs. new tricks.

      Besides, the people they're quoting don't really do much "in the trenches" coding anymore. They're in architect positions (which at Microsoft usually means "code evangelist").

    3. Re:I don't care what the MS Developers use by Anonymous Coward · · Score: 0

      Pay someone to code something for you instead of do it yourself ? You're a manager aren't you ?

    4. Re:I don't care what the MS Developers use by herojig · · Score: 1

      And what's so strange about that truism is that the code evangelists are usually the ones embracing all the visual coding tools, and then telling the underlings, "Here, throw that simple editor away and use this instead." This makes the evangelist look super cool to execs, even when coders are suffering silently or unheard. What I find interesting now that I in the media biz, is how successful such as interfaces like you find in Shake, are so effective, allowing you to zoom in and out of complex programs quite nicely. So I strongly disagree with Jeffrey Snover.

      --
      I think therefore I can't be ~TTNH
  11. modify that analogy by v1 · · Score: 5, Interesting

    "Managed code is like antilock brakes. You used to have to be a good driver on ice or you would die. Now you don't have to pump your brakes anymore."

    Might have been more appropriate to compare it in that people in the high performance arena (nascar) don't like antilock brakes because of their limits and the separation you get from your task at hand. (you lose your "feel for the road")

    Tho I'm a little strangely biased, I miss the days of assembly, when 10k was a LOT of code to write to solve a problem, thing ran at blindingly fast speed with almost no disk or memory footprint. Nowadays, Hello World is a huge production in itself. 97% of today's coders don't have any idea what they've missed out on and just accept what they've got. Even someone that understands the nerf tools like VB at a lower level can get sooo much more out of them. I recall taking someone's crypto code in VB and producing a several thousand-fold speed boost because of my understanding of how VB was translating things. They didn't know what to say, they'd just accepted that what they were doing was going to be dog slow. (and unfortunately the users are also falling under the same hypnosis)

    --
    I work for the Department of Redundancy Department.
    1. Re:modify that analogy by Timothy+Brownawell · · Score: 1

      "Managed code is like antilock brakes. You used to have to be a good driver on ice or you would die. Now you don't have to pump your brakes anymore."

      Might have been more appropriate to compare it in that people in the high performance arena (nascar) don't like antilock brakes because of their limits and the separation you get from your task at hand. (you lose your "feel for the road")

      Or note that antilock brakes can increase your stopping distance.

      Tho I'm a little strangely biased, I miss the days of assembly, when 10k was a LOT of code to write to solve a problem, thing ran at blindingly fast speed with almost no disk or memory footprint. Nowadays, Hello World is a huge production in itself. 97% of today's coders don't have any idea what they've missed out on and just accept what they've got. Even someone that understands the nerf tools like VB at a lower level can get sooo much more out of them. I recall taking someone's crypto code in VB and producing a several thousand-fold speed boost because of my understanding of how VB was translating things. They didn't know what to say, they'd just accepted that what they were doing was going to be dog slow. (and unfortunately the users are also falling under the same hypnosis)

      Managed code does (well, can) have one totally awesome feature: provable type safety. What makes this great, is that you can take the memory protection hardware out of your CPU (where AIUI it tends to be on the critical path), and replace it with some checks in your compiler and some bounds-checking on array accesses. So basically you're moving most of the (fairly significant) work of keeping programs separate out of the tightest loop possible and instead doing it once at startup time. Even running on standard x86 with some of the protection features disabled still gives a noticeable speedup (see section 4.2 at the link).

    2. Re:modify that analogy by Anonymous Coward · · Score: 0

      Who let a VB coder implement a cryptosystem? I can't imagine that there's a lot of overlap between VB coders and people qualified to write a production cryptosystem.

    3. Re:modify that analogy by Abcd1234 · · Score: 1

      Managed code does (well, can) have one totally awesome feature: provable type safety.

      That's ridiculous. There's absolutely nothing about "managed code", aka bytecode, that makes it type safe. Type safety is a function of the language... it just so happens that two of the most common "managed code" languages, C# and Java, are both strongly, statically typed.

      OTOH, Haskell is probably the most strongly typed language out there, and it compiles down to machine code binaries.

    4. Re:modify that analogy by v1 · · Score: 2, Insightful

      Who let a VB coder implement a cryptosystem

      well in this case all we actually ended up needing was the SHA1 and MD5 hashing, but he wanted to be complete about things so we did the full RFC. Still we had to hash 1mb blocks so speed was important. 4 seconds was dropped to a very small fraction of a second. But you really got to see the improvements when trying to do actual encryption.

      But when coding crypto, the tool isn't the first place you should look for security - pay more attention to the meatbag.

      --
      I work for the Department of Redundancy Department.
    5. Re:modify that analogy by MBCook · · Score: 1

      Of course, anti-lock brakes aren't designed for Nascar. I wonder if a version could be developed that would help in those situations. It's designed for people without a ton of training, who are likely to panic in rare situations, on normal roads at normal speeds. You can't say "airplanes are terrible because you can't go under 5mph." They aren't meant for that.

      But the analogy holds. If you know what you're doing, you can use managed code, or you can go unmanaged. Using managed code can be easier for routine things (like driving around town) even if you are a Nascar driver.

      It also allows people to get farther than they would have before with mistakes and bad design.

      --
      Comment forecast: Bits of genius surrounded by a sea of mediocrity.
    6. Re:modify that analogy by Anonymous Coward · · Score: 0

      I recall taking someone's crypto code in VB and producing a several thousand-fold speed boost because of my understanding of how VB was translating things.

      Yeah, I did the same thing with some 3D image volume reading code - their version took 60 seconds to read and parse a 512x512x176 volume, mine made it efficient and took all of about 1/2 second. So my version was a mere ~100 times faster. Then crunch time came and *I* was the one laid off. Fucking politics. (and no I hadn't punched the boss, screwed his wife, etc., though now I can think of good reason to do so ;) ).

      Maybe I can code this stuff 3x faster and have it run 100x faster because I used to write tons of assembly code? And no I never ran around like an arrogant prick either.

    7. Re:modify that analogy by Timothy+Brownawell · · Score: 1

      Managed code does (well, can) have one totally awesome feature: provable type safety.

      That's ridiculous. There's absolutely nothing about "managed code", aka bytecode, that makes it type safe. Type safety is a function of the language... it just so happens that two of the most common "managed code" languages, C# and Java, are both strongly, statically typed.

      OTOH, Haskell is probably the most strongly typed language out there, and it compiles down to machine code binaries.

      To work properly, the verification needs to be done by the runtime system rather than just the compiler. I think it's probably not possible to do this on ordinary (say, x86) machine code, and you need a properly designed bytecode to make it work. (Yes, I know that the chrome native client exists. I'm guessing that it works with the hardware protections, rather than being able to replace them.)

    8. Re:modify that analogy by Abcd1234 · · Score: 1

      To work properly, the verification needs to be done by the runtime system rather than just the compiler.

      Uhuh. Why?

      And what specific "verifications" are you referring to, exactly?

    9. Re:modify that analogy by Lord+Grey · · Score: 5, Insightful

      ... 97% of today's coders don't have any idea what they've missed out on and just accept what they've got. ...

      My apologies for snipping such a large portion of your reply, but that one sentence from your post nicely sums up so many of the problems with new coders it deserves calling out.

      Disclaimer: I'm an old fart when it comes to programming. I admit it. I like bare metal programming, high-performance applications with minimal footprint, and elegant solutions to non-trivial problems. I don't avoid kernel-level threads; they're a useful tool.

      The company I work for has hired a large number of programmers over the last year in order to replace a number of aging systems. I've interviewed a lot of these people, and I've worked with most of the ones that have we've hired on various parts of the overall project. The newer programmers know quite a lot about available frameworks and their general capabilities. They've been taught the 80/20 rule early on, and they embraced it: When faced with a new task, these people find something that already exists and set about modifying it. All that is fine for applications that are of a certain size. A size that, apparently, is about the size of school projects and therefore succeeds admirably when graded.

      So what I've seen coming through the door are people who can put Lego blocks together. They're used to that type of problem solving. They've been taught to download 80% of the solution, then "fix it" so it also does the other 20%. This type of problem solving works well when you're building Lego-block-shaped solutions. That fails to happen much of the time, however. Most real-world solutions -- you know, the kind that are complex enough that someone is willing to pay an actual salary to solve -- don't look like a collection of Lego blocks. The amount of custom code grows and grows as more and more Lego blocks are added. Interoperability problems between the Lego blocks start encompassing the majority of coding effort. The overall system gains complexity at an alarming rate. Things start to suck, both from the programmer's perspective as well as from a systems perspective.

      The bad part of this, and to bring things back to my original point, is that these newer programmers expect it to be that way. What's worse, at least from my point of view, is that this entire mentality has been around long enough for these programmers to stop coding and start managing other programmers. So now we have people who build things that suck, and managers who expect it to suck. Expectations are lowered and, unfortunately, met.

      Google and Apple seem unafraid to break this cycle, albeit in different ways. So hope is not entirely lost. Maybe that's the 3% you alluded to in your original post.

      --
      // Beyond Here Lie Dragons
    10. Re:modify that analogy by spiffmastercow · · Score: 1

      how did this get modded flamebait?

    11. Re:modify that analogy by Timothy+Brownawell · · Score: 1

      To work properly, the verification needs to be done by the runtime system rather than just the compiler.

      Uhuh. Why?

      And what specific "verifications" are you referring to, exactly?

      In order to dispense with hardware memory protection (and get the associated speed benefits), the runtime system needs to verify that your code does not diddle its pointers and look at parts of memory that it shouldn't. This means using a bytecode that can be checked for type-safety. Simply using a type-safe compiled language doesn't work, because when your system gets a binary to execute it does not know that it was generated from a type-safe language and even if it did it wouldn't know that the compiler was trustworthy.

    12. Re:modify that analogy by Abcd1234 · · Score: 1

      In order to dispense with hardware memory protection (and get the associated speed benefits), the runtime system needs to verify that your code does not diddle its pointers and look at parts of memory that it shouldn't.

      Once again, that's a function of the language and the facilities it provides. If your language doesn't give you pointers, you can't "diddle ... pointers", can you?

      Again, this has *nothing* to do with the underlying runtime system, and everything to do with how the language is designed.

      This means using a bytecode that can be checked for type-safety.

      Huh? I can only assume you don't really mean "type safety" here, given that "pointer diddlying" and type safety are entirely orthogonal concepts.

      So what do you *really* mean?

      Sounds to me like what you're *actually* talking about is sandboxing, and in that case, it is generally true that targeting an arbitrary virtual machine, whose bytecode is then executed by a monitoring VM, makes it a lot easier to sandbox code. 'course, then you have to trust the VM (and be willing to pay the price in overhead)...

    13. Re:modify that analogy by drsmithy · · Score: 5, Insightful

      Might have been more appropriate to compare it in that people in the high performance arena (nascar) don't like antilock brakes because of their limits and the separation you get from your task at hand. (you lose your "feel for the road")

      I always laugh when I read this sort of thing.

      In *real* high performance racing - Formula 1 - ABS (along with traction control, launch control, active suspension, and a whole bunch of other fancy electronics that basically turned the cars into a ludicrously fast go-karts) was used very successfully and then banned because it could do a far, far better job than any human.

    14. Re:modify that analogy by drsmithy · · Score: 1

      Of course, anti-lock brakes aren't designed for Nascar. I wonder if a version could be developed that would help in those situations.

      Of course it could. The Formula One world banned ABS over a decade and a half ago because it could brake far better and more consistently than any human.

      The idea that a slow human controlling all four wheels with a foot pedal, could do a better job than a computer with dozens of accelerometers, much quicker reaction times, vastly finer motor control and the ability to brake each wheel independently, is just laughable.

    15. Re:modify that analogy by Anonymous Coward · · Score: 0

      Actually it would really help for you to know what you're talking about when telling other people that they're wrong in an arrogant tone.

      The OP was discussing [i]memory safety[/i], which is considered a requirement for [i]type safety[/i]. A type-safe language must restrict dangling pointers across structurally different types. In other words, a variable's pointer cannot be changed to a programmer-defined location in memory to allow unexpected behavior. In practice this also defeats changing the pointer address to the same type in a different section of memory by pointer arithmetic, because that can only be determined at runtime and is not statically verifiable. For all practical purposes, a type-safe language is sandboxed and GC'd to avoid type-unsafe modifications.

      If you want to know what type-safety means, and not just huff and puff about it, then I suggest that you read Benjamin Pierce's excellent (though complex) works.

    16. Re:modify that analogy by Anonymous Coward · · Score: 0

      Managed code does (well, can) have one totally awesome feature: provable type safety. What makes this great, is that you can take the memory protection hardware out of your CPU (where AIUI it tends to be on the critical path), and replace it with some checks in your compiler and some bounds-checking on array accesses. So basically you're moving most of the (fairly significant) work of keeping programs separate out of the tightest loop possible and instead doing it once at startup time. Even running on standard x86 with some of the protection features disabled still gives a noticeable speedup (see section 4.2 at the link).

      Memory safety is indeed a great property, but the memory barriers in the garbage collector of your managed code environment almost certainly rely on the same protection features you're proposing to disable, so you're not winning anything. That said, compiler-enforced type safety is orthogonal to the issue of code being "managed" (whatever that Microsoft newspeak really means), and there are plenty of languages with equivalent type safety which compile directly to machine code without an additional VM underneath.

    17. Re:modify that analogy by Anonymous Coward · · Score: 0

      Why was anybody implementing crypto/hashing in pure VB? Wouldn't it have been tonnes easier to just drop a dll in and have VB call that? (Or look for platform libraries like CryptoAPI?)

    18. Re:modify that analogy by MemoryDragon · · Score: 1

      Main problem here is simply you should do your build process on the command line not having it done by the IDE.
      Period, you can use ides. I nowadays in the java domain use mostly maven and have maven generating the project files for my preferred tools to use.
      But yet I would never dismiss high level tools. The Microsoft world however is completely different, the entire install, dll, OLE/ActiveX, Registry mess is a mess which should have been cleaned up 10 years ago. But heck 10 years ago Microsoft also recommended to use Visual Sourcesafe while they themselve shunned away from it.

    19. Re:modify that analogy by nurb432 · · Score: 1

      I recall taking someone's crypto code in VB and producing a several thousand-fold speed boost because of my understanding of how VB was translating things. They didn't know what to say, they'd just accepted that what they were doing was going to be dog slow. (and unfortunately the users are also falling under the same hypnosis)

      Don't worry, Intel will just come out with another chip set next month :)

      ( ya, its a spiraling deathtrap )

      --
      ---- Booth was a patriot ----
    20. Re:modify that analogy by BenoitRen · · Score: 1

      I'm part of that 3%. I loathe managed languages. They get in the way, you don't know what you're actually doing when using them. Your analogy with Lego blocks is quite apt, as most of what you end up doing is telling built-in language libraries what to do. It's so bad it's demotivating.

      I'm lucky to have attended a school that started out by teaching C. That's how I learned the language, as I didn't get it when trying to learn it by myself. It's probably because of the syntax, as I started out with Basic, followed by Visual Basic (6).

      One has to wonder why in the second year the school makes everyone switch to .NET and Java. Ugh. So I'm learning C++ on my own. I'd like to learn assembler later on.

      Unlike most others who like bare metal programming, I'm still in my twenties, so there's hope indeed!

    21. Re:modify that analogy by v1 · · Score: 1

      Wouldn't it have been tonnes easier to just drop a dll in and have VB call that?

      Nope, in fact that was sort of the core issue. Actually I fibbed a little, it wasn't VB, it was RB, but I figured you all could relate better to it. This code needed to be mac/windows/linux cross platform, and RB's compiler can target all three. Start relying on DLLs and plugins and you restrict what platforms you can target. We actually had a crypto plugin already that did windows and mac, but not linux. The original plan was to ifdev it so that only the linux build used the RB implementation, but in the end we started gunning for ALL the plugins because they were known to break from time to time and we preferred having total control over things and not relying on black-box solutions.

      After following that idea, we eliminated two of the other plugins we were also relying on. We did finally have to accept that one was just not going to be removable though, due to language limitations.

      --
      I work for the Department of Redundancy Department.
    22. Re:modify that analogy by ultranova · · Score: 1

      Might have been more appropriate to compare it in that people in the high performance arena (nascar) don't like antilock brakes because of their limits and the separation you get from your task at hand. (you lose your "feel for the road")

      And just like most drivers aren't NASCAR material and need all the aid they can get, despite their delusions to the contrary, most programmers aren't John Carmack and need spoonfeeding, handholding and garbage collection, despite their vastly overinflated opinion about their l33t sk1llz.

      I like that analogy !-)

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    23. Re:modify that analogy by ultranova · · Score: 1

      OTOH, Haskell is probably the most strongly typed language out there, and it compiles down to machine code binaries.

      Java can be compiled to machine code binaries. Every language can, since machine code is Turing complete. And there exists garbage collection modules for C and C++, so clearly being compiled to machine code ahead of time has nothing to do with being "managed code". So, please explain what your point was?

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    24. Re:modify that analogy by DamnStupidElf · · Score: 1

      Once again, that's a function of the language and the facilities it provides. If your language doesn't give you pointers, you can't "diddle ... pointers", can you?

      There is a published exploit of the Java virtual machine relying on the eventual flipping of a single bit of RAM (cosmic rays are apparently the most common source) to turn a safe data structure into a manipulable pointer to all of RAM. If you do not type check the machine code before you run it, the language it was compiled from will not protect you from compiler bugs or malicious machine code that breaks the type safety model.

    25. Re:modify that analogy by Anonymous Coward · · Score: 0

      Not better for the best, just more consistent for the mediocre.

  12. Package Runners vs Programmers by icebike · · Score: 4, Insightful

    Well you are very close to the mark here.

    The integrated IDEs arose to allow the hobbyist and corporate IT newbie turn out something, which has a good chance of being functional if not maintainable or efficient. These tools also allow specialists from other fields (accountants, meteorologists, scientists) actually turn out products.

    Efficiency, maintainability and extensibility don't matter for that type of programmer. They just need to put up a few screens to count the widgets or produce the daily report. It doesn't have to be portable,or efficient, and chances are it will be tossed as soon as that programmer moves on to another job.

    Those programmers do manage to turn out a reasonable amount of customized applications, some of which are actually marketable. The vast majority are for in-house use. But some actually work quite well for specialized industry applications like Medical Billing, where the knowledge of the subject matter is more important than the efficiency of the code.

    OS level code has to be much more efficient, and there is no substitution for knowing the programming language, the processor capabilities, and the compiler peculiarities. You can not leave to some IDE the task of putting code behind a button that will drag in half a ton of MS Foundation Classes or use some particular C/C++ construct that is horribly inefficient. You are basically always dealing with some data stream or message and doing X Y and Z with it and handing it off to the next task.

    As such these guys virtually never see a piece of data all the way thru the computer. Their customers are other pieces of software. Their wholesaler are yet more pieces of software. Its data-in, whack it, pound it, and pass it on sort of code, and a lot of it, and a lot of self plagiarism. The IDEs just get in the way.

    --
    Sig Battery depleted. Reverting to safe mode.
    1. Re:Package Runners vs Programmers by KibibyteBrain · · Score: 5, Insightful

      Only one of these guys said anything about not liking to use an IDE. I use IDEs to write assembler language for microcontrollers at work every day. Sure I could do it in an editor as well but I much prefer the graphical debugger and simulator of my IDEs as being able to see all the dozens control registers' and fuses' bits graphically during the execution of each instruction is easier for my mind to wrap itself around than my screen littered in hex or ones and zeros, at least sometimes. That said, my assembler's emitted machine code is no different than if it wrote it in Vim and then ran the command line based build tools, which are the same thing my GUI runs when I press the associated F-key.

      So the IDEs really have nothing to do with the so called "designers" you see in Visual Studio. And yes, its true that no developer who was serious about maintaining a multi-year product could do it via the designers before, you just had no control over WTF was going on. Now with WPF and xaml you finally can use the designers in a maintainable fashion, but it's a bit too little, too late for most developers to care. You can write pure Windows code in C as a makefile project(so you have clear control over the build, even to the point of a different toolchain like GNU) just as well in the Visual Studio 2010 IDE as with Vim and the command prompt tools. It's just a matter of if the IDE at that point gets in the way more than it helps.

    2. Re:Package Runners vs Programmers by TapeCutter · · Score: 2, Informative

      I've been making a good living from MSVC since v1.5 arrived on win3.1. My current place of employment uses it to write a single code base that is later compiled in 32/64 bit versions for Win, Linux, Solaris, HPUX and Aix. IMHO MSVC's edit, search and (win) debug features are second to none. Not only that but as the GP implies, creating a large project that builds multiple sub-projects is a snap when compared to writing make files. Some of our build scripts create dozens of binaries, the MSVC command to kick it all off is a single line in a batch file.

      In other words tools do not write "tight code", the programmer does. For example, MSVC is often accused of creating binary bloat. However the IDE does not force the programmer to link in the default libs, ignorance and/or sloth is responsible for that.

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    3. Re:Package Runners vs Programmers by digitalunity · · Score: 1, Troll

      Agreed. Using visual studio is a pleasure. I develop on Qt Creator almost exclusively now in windows and it really is a pleasure.

      I hate that Qt Creator relies on GDB though. The mingw port of GDB is horrifically slow, even on modern hardware. It also pales in comparison to MSVC debugger as far as integration and usability.

      --
      You can't legislate goodness. Let each to his own destiny, by will of his freely made choices.
    4. Re:Package Runners vs Programmers by TapeCutter · · Score: 2, Informative

      I haven't used Qt creator but I've heard good things. I used to be a big fan of Borland's Turbo IDE's back in the late 80's early 90's and I think that is where much of the initial inspiration for MSVC came from. It's the only example I can think of where MS beat a strong competitor the old fashioned way (ie: with a better product).

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    5. Re:Package Runners vs Programmers by Sique · · Score: 1, Troll

      It's the only example I can think of where MS beat a strong competitor the old fashioned way (ie: with a better product).

      Excel would be another one.

      --
      .sig: Sique *sigh*
    6. Re:Package Runners vs Programmers by thetoadwarrior · · Score: 1

      Not everyone that uses an IDE uses it to generate code for them. Those of us who don't have the world's greatest memory (especially when trying to remember the cocked up method names in PHP after using good languages) like the code competition and more importantly having all the tools I need to hand is a big bonus. With web development you don't even have to leave your IDE to view the results in a browser.

      Like anything an IDE isn't best for every situation. If I were logged into my server at home I would not boot up Netbeans to write/edit a script but I don't have hangups that make me feel as if I have to use Emacs of Vim to be a real programmer either.

    7. Re:Package Runners vs Programmers by Joutsa · · Score: 1

      Only one of these guys said anything about not liking to use an IDE. I use IDEs to write assembler language for microcontrollers at work every day. Sure I could do it in an editor as well but I much prefer the graphical debugger and simulator of my IDEs as being able to see all the dozens control registers' and fuses' bits graphically during the execution of each instruction is easier for my mind to wrap itself around than my screen littered in hex or ones and zeros, at least sometimes.

      I used to write very low level C and assembly for two different DSP processors for a living, too. We used the vendor's joke of an IDE for debugging and only debugging. Everything else was better* with external editor (Emacs or UltraEdit depending on developer's taste, I don't think anyone used vi) and command line. I hear that the vendor has since then abandoned their home-brew IDE and maintains a fork of Eclipse instead.

      * When I say "everything was better" I mean that everything still sucked pretty badly. Could have been improved, though, if anyone would have cared and had some time to redo the build process.

    8. Re:Package Runners vs Programmers by Blakey+Rat · · Score: 1

      Internet Explorer, remember how shitty Netscape 3 & 4 were?

      Not because Microsoft really did anything particularly right, just because Netscape screwed up so badly.

    9. Re:Package Runners vs Programmers by Anonymous Coward · · Score: 0

      Parent original post >>> I used to be a big fan of Borland's Turbo IDE's back in the late 80's early 90's and I think that is where much of the initial inspiration for MSVC came from. It's the only example I can think of where MS beat a strong competitor the old fashioned way (ie: with a better product).

      Nope. M$ created a shameless copy named Quick Pascal (as identical to TP as DOS was to CP/M). They later retired the product (for reasons not known to me).

      > Excel would be another one.

      Excel was so bad it wouldn't even do Math right! Some universities even warned students about this.

      Excel, Word atc. leveraged the suite concept to promote incompatibilities with competitors _and_ with older versions of themselves. They still use the same tactics and no one -- not the US, nor EU -- does anything about this. That's the way they force upgrades. I once broke the upgrade cycle where I work (I no longer can do that there) and we stuck with the then current M$ Office Suite. It was funny to see the microserfs in our company get enraged.

    10. Re:Package Runners vs Programmers by Nefarious+Wheel · · Score: 1

      You can not leave to some IDE the task of putting code behind a button that will drag in half a ton of MS Foundation Classes or use some particular C/C++ construct that is horribly inefficient

      Such as the time I caught one of my developers pulling in a rather large library to sort a shopping basket designed to have no more than 20 items in it. For an already busy web page, in the days before servlets. /cry

      --
      Do not mock my vision of impractical footwear
    11. Re:Package Runners vs Programmers by lennier · · Score: 1

      "As such these guys virtually never see a piece of data all the way thru the computer. Their customers are other pieces of software."

      More and more, that's going to be the normal experience for all programming. The programmer who asks for, and thinks his software is so important that it requires, bare-metal machine access (or even that it needs to be "installed" on a particular machine) is going to get strange looks. Orchestrating components and data and playing nicely with others will be job one.

      And that's the way it should be, if we're going to make any progress. How many industrial shops refuse to use any prefabricated components or deal with any suppliers and insist on smelting their own ore and growing their own hemp for rope? Yeah, we kinda grew past that point around the 18th century. But in software, it's still considered a badge of manliness to code all the way down to the bare metal and you're some kind of wimp if you don't.

      It's time software grew up.

      --
      You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
    12. Re:Package Runners vs Programmers by Tellarin · · Score: 1

      IIRC MS hired most of Borland devs. Not that I think there is anything wrong with that.

      The first versions of Visual Studio were crap, but it really improved quickly.

    13. Re:Package Runners vs Programmers by Mr+Z · · Score: 1

      I used to write very low level C and assembly for two different DSP processors for a living, too.We used the vendor's joke of an IDE for debugging and only debugging. Everything else was better* with external editor (Emacs or UltraEdit depending on developer's taste, I don't think anyone used vi) and command line. I hear that the vendor has since then abandoned their home-brew IDE and maintains a fork of Eclipse instead.

      Hmmm... I get the sinking feeling I work for that vendor. :-) Which family DSPs?

      FWIW, I don't use our GUI either except for loading stuff on silicon. Most of the time though, I'm working with the processor about a year or more before there's silicon, so that means I'm doing everything under Linux with make and the command-line compiler anyway.

    14. Re:Package Runners vs Programmers by FrankieBaby1986 · · Score: 1

      I agree. I've never understood the IDE haters. I don't do much GUI programming, but when I do, I usually find that using a GUI to place GUI components can be easier at times, depending on the language and toolkit, but often times you get simpler, cleaner and easier to debug code if you just make it yourself.

      IDE's, imho, are great at making debugging and coding more efficient. In case-sensitive languages, and while using multiple libraries, or even my own code, things like auto-completion, tooltip hints, and even function signature hinting go a long way towards avoiding time wasted sifting through documentation.

      Sometimes the little conveniences add up to a lot of time and stress saved.

      --
      ERROR: SIG NOT FOUND (A)bort, (R)etry, (F)ail?:
    15. Re:Package Runners vs Programmers by Joutsa · · Score: 1

      Hmmm... I get the sinking feeling I work for that vendor. :-) Which family DSPs?

      TI C55x and C64x. The IDE - or our build process for that matter - didn't really support multiple targets. I guess multiplatform DSP code isn't that common out there.

      FWIW, I don't use our GUI either except for loading stuff on silicon. Most of the time though, I'm working with the processor about a year or more before there's silicon, so that means I'm doing everything under Linux with make and the command-line compiler anyway.

      Lucky you. The Linux tools were nice and blazingly fast compared to Windows ones.

    16. Re:Package Runners vs Programmers by Mr+Z · · Score: 1

      Yep, I do work for that vendor, on the C6000 team. (On C6000 since 1998, actually.)

      I don't know why the Windows versions of the tools were so much slower than the Linux ones. I have found that many command line tools brought over to Windows from *nix using Cygwin (and maybe MinGW in some cases) seem to have significant, strange pauses if run from CMD.EXE. For example, my copy of "less" takes around 10 seconds to start. I don't know how we compile our Windows tool versions, though, so I have no idea if it's a similar mechanism at play or not.

      The IDE definitely doesn't support multiple platforms well. The fact that you have to "configure a board" before you even start, and that you can't just defer that or configure a set of boards just irks me as well.

      Hopefully your experience with the chips themselves wasn't too bad. Who knows, depending on what you were working on, you may've gotten to use some of my code directly, at least on the C64x! :-)

      Small world, eh? Howdy!

  13. Abstraction vs Managed by minsk · · Score: 1

    This seems a good place to point out one of the chronic errors of people talking about software development...

    Abstract does not mean slow, bloated, inefficient, or incomprehensible.

    Having the wrong abstraction for the task at hand, however, often does. And blindly questing after "managed" "portable" and "high-level" is a good way to get abstractions which work poorly for *any* task. At best, you get Java/.Net/Javascript... tolerable for many tasks, and completely useless for others.

  14. No, it's just "old dogs - new tricks" by Opportunist · · Score: 3, Interesting

    I could write a lengthy essay about how old programmers don't like to use new tools that offer them little because they already know all the tricks and gadgets for their old, "inferior" and more complicated tools, while new tools are perfect for new programmers because they don't have to learn so much to achive the same results because those tools are easier to use and the learning curve isn't so steep until you have a result, but I think I can sum it up in a single word:

    Emacs.

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    1. Re:No, it's just "old dogs - new tricks" by schklerg · · Score: 1

      Surely you mean vi...
      FLAME ON!

      --
      Be Excellent To Each Other
    2. Re:No, it's just "old dogs - new tricks" by Anpheus · · Score: 1

      No, Vi is definitely harder. I opened it up one day and attempted to write a little parallel application that used neural networks to synergize with the corporate data stream, but I couldn't figure out how.

      I opened up Emacs and it was just C-x Meta-e Quasi-butterfly and it was done. I didn't even know I had a butterfly key.

    3. Re:No, it's just "old dogs - new tricks" by RAMMS+EIN · · Score: 2, Insightful

      In my experience, a lot of these "tools that are perfect for new programmers because they don't have to learn so much" really mean that you spend a lot of time learning the tool, and _then_ have to still learn what's really happening if you ever want to make it to the level of the "old programmers", and dog forbid you are ever required to use a different tool.

      To add insult to injury, the focus on the tool usually means there is so much boilerplate before you actually get to understanding the programs you write that it gets _harder_ to figure out what's really happening; you end up with "programmers" to whom programming remains some kind of black magic; they can only program things if there is a tutorial that tells them how to do it, a wizard that generates the code for them, or some sample code that they can copy paste. At best, they'll be able to glue together ready made code to make something that more or less works, but you won't find these people coming up with innovative solutions themselves, and you really don't want to let them anywhere _near_ code that requires an understanding of concurrent programming or security.

      Now, I am not saying that people who start by learning a tool will never make great programmers or that people who start with a text editor and an assembler will always make great programmers. I just think that the idea that the former have an advantage over the latter is mistaken. At it's core, programming is actually not that hard. So why not let people start out by giving them a good understanding of the core, and then let them focus their energy on the hard part: translating Real World requirements to units that are trivial to implement and test?

      In my opinion, a good tool is one that helps you do things you already know how to do, while not getting in the way if - for whatever reason - you want to do them yourself. No significant learning curve (you don't _have_ to use the tool's facilities), no black magic, and no breakage if you mix in code that isn't from the tool. A bad tool is one that gets in the way: requires significant effort to learn, does things you don't understand, chokes on code that doesn't fit its model, etc. A good tool doesn't make you a better programmer, just a more productive one. A bad tool doesn't make you a better programmer, either; it just provides a boost to bad programmers and cripples good programmers so both seem about equally bad.

      --
      Please correct me if I got my facts wrong.
    4. Re:No, it's just "old dogs - new tricks" by Opportunist · · Score: 2

      Well, that's what the industry wants.

      Look at it sensibly. Yes, RAD tools (and let's face it, that's what VS is under the hood) abstract away a lot of the "inner workings" of programs. Ask 10 RAD programmers for the difference of compiler and linker and 5 of them will stare at you blankly. Ask the remaining 5 why there is two steps in the first place and 4 more will go "ummmm...".

      But at the end of the day, the customer (or boss, if the programmers are employees) does not care. They care that they produce code quickly and cheaply. And (un)fortunately that's what these boilerplate programmers can achive with RAD tools and wizards. I've spend my professional time in various coding gigs, and most of the time it was boilerplate programming. Why? Because companies for some odd reason love reinventing the wheel, they won't open the code for other (hey, the competitor getting our code? You insane or something?) and I honestly ended up doing exactly the same job for two different companies. I should have stolen the code at the first, copy/pasted it and spent the 6 months on some tropical island instead of rewriting essentially the same code...

      There's a reason why you learn at universities (at least here) to work without any tools. For pretty much all of my studies, my tools were an editor and a command line compiler (which eventually culminated in writing a new compiler...). It's tempting to take a shortcut and throw your assignment into a wizard and solve it in a day instead of puzzling together the program in a few weeks. But that's not the goal, the goal is learning. And if you want to learn and find out how that black magic in your box works, you can. The information is available (IIRC even for VS). If you dig into it, it will make you a better programmer without doubt. You will not only know that it works, but also why. And you will know why it does NOT work if it doesn't for some black magic reason.

      Personally, I think we'll see the demise of the boilerplate programmers at some point in the future. When the tools become sophisticated enough that these people will be obsolete because anyone can slap together a simple program, as we already see in a limited way with macro languages for various programs (e.g. VBA for Excel, which any halfway clued office worker can create programs for). The wizards and RAD tools will evolve to the point where they can be used to easily create simple office applications for database manipulation without the need to even know a programming language or SQL.

      So I guess eventually these people will either have to learn the "art" of "real" programming or get new jobs.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    5. Re:No, it's just "old dogs - new tricks" by vegiVamp · · Score: 1

      I take it you mean "the same results" to not include speed, memory and disk imprint ?

      --
      What a depressingly stupid machine.
    6. Re:No, it's just "old dogs - new tricks" by Blakey+Rat · · Score: 0, Troll

      Whoa whoa whoa whoa whoa...

      You're saying that Vi and EMACS have *less* of a learning curve than Visual Studio!? Seriously?

      You're smoking some high quality stuff there.

    7. Re:No, it's just "old dogs - new tricks" by Blakey+Rat · · Score: 1

      Who cares?

      Look at what your time is worth as a programmer... for 2 days of your full-time employment, you could simply buy another server and double your program's available speed/memory/disk imprint. (Disk? Seriously? You can't even BUY a disk less than 200 GB now... what the fuck are you CODING, man!?)

      Economically, it makes a hell of a lot more sense buy a new server.

      What really bothers me is programmers like you, and like those quoted in the article, who are so insular that they don't understand the rest of the company at all. If you think that spending a couple days longer on a project so you can eke out 20% more performance is worthwhile, you're operating in a haze of cluelessness.

    8. Re:No, it's just "old dogs - new tricks" by fluffy99 · · Score: 1

      The approach depends on what your program gets used for. If it's a corporate-wide main application, its better to spend the effort at the programming level to make it clean and fast. Otherwise you contribute to the need to upgrade all of the company desktops. Doubling the size of the server to compensate for crappy programming has more than the initial hardware and OS cost. You also have to account for the higher power and cooling costs over its lifetime. When you truly start looking at it from an economic perspective, clean and fast code can make better economic sense.

      If it's just a quick-n-dirty widget that rarely gets used, I'll agree that speed doesn't matter. For a corporate internet server, I'm worried about the guy that's so lazy he can't write clean code. That's usually the same guy that doesn't bother checking his code for potential vulnerabilities, doesn't even bother sanitizing all of his inputs, and doesn't document his code worth a crap..

  15. Uh, sure... by msauve · · Score: 0

    let me know when they start writing "writing tight, bare-metal code" (i.e. assembler). C isn't that.

    --
    "National Security is the chief cause of national insecurity." - Celine's First Law
    1. Re:Uh, sure... by tftp · · Score: 1

      let me know when they start writing "writing tight, bare-metal code" (i.e. assembler). C isn't that.

      Linux is 99% C and 1% assembler. Today it would be foolish to write the entire OS in assembler - at least because the compiler often optimizes the machine code better than you do, unless you really spend time on it. I wrote assembly code years ago, and it is minimally maintainable or reviewable. Imagine how far Linux 1.00 would go if it was all in assembly... and you'd immediately lose portability.

    2. Re:Uh, sure... by msauve · · Score: 1

      So, you're implying that Microsoft wrote Linux? Meh.

      The point you are missing is that "bare-metal code" is assembler, regardless of how much effort is involved. Go ahead and write a real time driver in C, let me know how it works for you.

      --
      "National Security is the chief cause of national insecurity." - Celine's First Law
    3. Re:Uh, sure... by tftp · · Score: 4, Insightful

      The point you are missing is that "bare-metal code" is assembler, regardless of how much effort is involved.

      I again have to point you to Linux or *BSD, these OSes have real time drivers in C. I don't recall seeing *any* peripheral driver in Linux that is not C. Practically all assembly code is under arch/ which means bootstrap, memory initialization and main timers. The rest is C.

      Go ahead and write a real time driver in C, let me know how it works for you.

      I'm doing this right now, and it is a very usual thing for me to do because I work on firmware for slower microcontrollers that run at clock speeds from 1.8 to 16 MHz. I have tons of peripherals in the MCU, and they must be serviced on time. A typical MCU project is a real time design. Sometimes I profile the code by connecting an oscilloscope to some spare pins and check that I have enough time in critical parts of the code. And *all* the code is C, compiled by avr-gcc 4.3.2. I have maybe 0.1% of the code that is in assembler, and that is stock macros that come with avr-gcc.

      To illustrate, here you can see the lowest level of avr32 support, and you can observe how many LOCs are in .S and how many are in .c files. If still not convinced, visit mm/ and see what language the do_page_fault() is implemented in; that is one of most performance-critical pieces of code. C today is the "bare-metal" language of choice, and it works well in that role.

    4. Re:Uh, sure... by Anonymous Coward · · Score: 0

      use qnx misra C with hard time constraint #pragma

    5. Re:Uh, sure... by ceoyoyo · · Score: 4, Insightful

      "I work on firmware for slower microcontrollers that run at clock speeds from 1.8 to 16 MHz"

      No wonder you can afford to use C! ;)

      I can buy a $1.20 microcontroller that's more than an order of magnitude faster than the machine I learned to code on. Still, there are still times when a nice bit of assembly makes a big difference. Not much, just as much as you need.

      As for the rest of the thread, assembly IS the bare metal. C is the next best thing to bare metal. Not to say that you should code everything in assembly, that would be silly. But being aware that it exists can't hurt.

    6. Re:Uh, sure... by Madsy · · Score: 1

      The only prerequisite to use C code for "bare-metal" code is a working stack. That means setting the stack pointer to a sane value right after a RESET. I've coded lowlevel embedded stuff for the Gameboy Advance and GP2X with C only. Down to the interrupt handler.

    7. Re:Uh, sure... by bertok · · Score: 1

      "I work on firmware for slower microcontrollers that run at clock speeds from 1.8 to 16 MHz"

      No wonder you can afford to use C! ;)

      I can buy a $1.20 microcontroller that's more than an order of magnitude faster than the machine I learned to code on. Still, there are still times when a nice bit of assembly makes a big difference. Not much, just as much as you need.

      As for the rest of the thread, assembly IS the bare metal. C is the next best thing to bare metal. Not to say that you should code everything in assembly, that would be silly. But being aware that it exists can't hurt.

      I hear that Windows 7 / Server 2008 R2 has a pure-software implementation of DirectX 11 that's got some huge percentage implemented in assembler. It's still a useful and current skill that turns up in large scale deployments of production code! 8)

    8. Re:Uh, sure... by Anonymous Coward · · Score: 0

      Only raw, binary-only assembly is "bare metal".

      Most every assembler nowadays is a symbolic or macro assembler; it's pretty close to C if you think about it.

    9. Re:Uh, sure... by Anonymous Coward · · Score: 0

      As always 80% of the running time is spent in 20% of the code. Using anything but a high level language (which can be C in the embedded context) for non-critical 80% of your code is a complete waste of time.

      Also, if you understand your compiler well enough, there's practically no difference between the "low levelness" of C and assembly. The latter is just a 1:1 mapping and the former a very predictable 1:n mapping of text to machine code.

    10. Re:Uh, sure... by MrPhilby · · Score: 1

      Assembly was a luxury in the old days. I seriously remember writing in hex to memory, referring to the assembly code in a reference book.

    11. Re:Uh, sure... by ceoyoyo · · Score: 1

      Ah, the good old days. In undergrad we built simple programmable computers out of gates and programmed them by flipping DIP switches and pressing buttons.

      Assembly is usually one-to-one translated to machine code though, so they're technically both equivalent as far as bare metal goes.

  16. Why I prefer plain old text editors by selven · · Score: 0, Troll

    When I program using gedit, if there's an error I know that the error is somewhere in the written code in front of me. When I program using some IDE and there's an error, it might be hidden deep within 3 layers of menu options. There's much less control over the situation the second way.

    1. Re:Why I prefer plain old text editors by Anonymous Coward · · Score: 5, Insightful

      Yeah, because IDEs don't have lists of errors, and double clicking on the error doesn't take you right to the line where the error is. It's so much easier to hunt through random code than to look at the little red squiggle on the line the IDE pointed out to you.

      I'd call you an idiot but that would be insulting to idiots.

    2. Re:Why I prefer plain old text editors by Spy+der+Mann · · Score: 1

      I think you're overgeneralizing. Not all IDEs separate the code in menus and popdown lists. Unfortunately, some of Microsoft's tools don't give you access to the full source code and it's a royal pain in the ass to refactor code.

      This is the problem that perhaps the article is talking about: When the source code is tied to the IDE, everything becomes impossible to maintain.

    3. Re:Why I prefer plain old text editors by Anonymous Coward · · Score: 1, Insightful

      If you'd go back and reread the statement, you'll see you argued against a point not made. Here's an example of what the GP means: I'm working on a team developing some computer vision software that will ultimately run under Linux. I develop under Linux, but my teammates do not. OpenCV operates under Windows, but when I get things running on my VS installation and send them the code, nothing. An error located somewhere in the configuration means they cannot use the (correct) code without first identifying and changing library and linker options.

      I'd call you an idiot but that would be insulting to idiots.

      And who's the one who is incompetent?

    4. Re:Why I prefer plain old text editors by Anonymous Coward · · Score: 0

      An IDE may be misconfigured and have problems, but how is that any more inconvenient than ensuring that your makefiles, build system are working in a non-IDE environment? If you have a build configuration problem, you may have to dig through several files to fix the issue.

    5. Re:Why I prefer plain old text editors by Anonymous Coward · · Score: 0

      When I program using gedit, if there's an error I know that the error is somewhere in the written code in front of me. When I program using some IDE and there's an error, it might be hidden deep within 3 layers of menu options. There's much less control over the situation the second way.

      That is assuming you are using the IDE for automatic code-generation. That isn't always the case. For instance, I've seen increasing numbers of Java projects with Maven (rather than ant) as the build / makefile that are edited in NetBeans, precisely because although it is an IDE, it just lets Maven and the plain old java compiler get on with the build. All the benefits of code completion, support for common operations ("rename this package and all the references to it"), but if there is an error it is in code that the programmer has typed. And you can tell because you can see it running the same commands you would run at the command line.

    6. Re:Why I prefer plain old text editors by DefenceForce · · Score: 2, Insightful

      Well, both of you are correct imo. Yes I prefer having to double click on the error in the IDE and have the cursor positioned on the correct line on the correct source code... except sometimes the indicated error has nothing to do with the actual problem. In practice, on non trivial projects involving many developers, libraries, inherited property sheets and complicated solution files, it is quite common that the error is due to something included before something else, or somebody changing an inherited parameter somewhere else in the code base. So yes in the end you have an error somewhere, but the cause of the error is not necessarily located there and may be very difficult to find.

    7. Re:Why I prefer plain old text editors by Anonymous Coward · · Score: 0

      Remind of my first try on visual studio wizard..

      It manage to duplicate the same command. hidden in 4 call deep, on the first 3 line of main()..

      Don't rely too much on IDEs!

      my usual reply to rookies that tell me let the optimizer do it for you, "Optimizer don't swap a bubblesort to a quicksort!'

    8. Re:Why I prefer plain old text editors by Anonymous Coward · · Score: 0

      Look, nobody wants single button compilation, autocompletion with a nice list of functions so you don't have to constantly switch files, precompilation error checking, and debugger. Who wants to actually concentrate on coding when there are so many menial tasks that can be done to make you look smarter?

      If your error list is hidden 3 layers of menu deep then the IDE you are using sucks ass or you had no idea what you were doing. I prefer Visual Studios by far. I had to use XCode toward the end of my last job for some iPhone stuff and it was an absolute mess of an IDE. I didn't care for Netbeans when I had to use Java for school, but JCreator was alright.

    9. Re:Why I prefer plain old text editors by selven · · Score: 2, Interesting

      When I get an error, the compiler also points exactly to the line where the error is. So your insults are completely unwarranted.

    10. Re:Why I prefer plain old text editors by PmanAce · · Score: 0

      For the life of me, I can't beleive the stuff I am reading! I can't imagine not using Visual Studio for my job. And no, I do not use drag-and-drop. Using a coin to screw a screw is not better than using a screwdriver. Use the right tools folks to make your job easier.

      --
      Tired of my customary (Score:1)
    11. Re:Why I prefer plain old text editors by Anonymous Coward · · Score: 0

      So you use a different environment and changes in your environment are not reflected in theirs. I don't really see what that has to do with IDEs.

      It is like you using GNU make and me using BSD make. It won't work for anything non-trivial without making some effort.

      Your header files are at /usr/include, mine are at /usr/local/include. We have different platforms to develop in. We need a tool that solves that problem, like autoconf.

      See the scheme? Your environment is different from my environment. We don't want to use the same environment. To make work feasable we need a tool to abstract from the environment. You use different environments but you haven't figured out how to manage that. This has nothing to do with IDEs.

    12. Re:Why I prefer plain old text editors by Anonymous Coward · · Score: 0

      Oh yeah, changing an option with clicking on it is totally different from changing an option by using a text editor. How can I possibly know what I am doing if I don't touch the keyboard?

    13. Re:Why I prefer plain old text editors by Anonymous Coward · · Score: 0

      Your critizism isn't about IDEs, it is about generated code. Not all IDEs generate code. And there are lots of code generators for the CLI.

      For example I regularly use gengetopt when I write CLI programs with C/C++.

      The stupid wizards in Visual Studio are the result of the CASE hype. They are really bad most of the time. But there is so much more in Visual Studio that make it useful. I'd say the really important features of an IDE are: integrated debugger, auto-completion, refactoring, code navigation. Maybe you can do most of that with your text editor. But that means your text editor actually is an IDE. If it interfaces with the debugger and the compiler I'd call that an integrated development environment.

    14. Re:Why I prefer plain old text editors by Blakey+Rat · · Score: 0, Flamebait

      Two things:

      1) That's a language problem. Good languages (i.e. not C/C++) don't allow errors like that, or at least make them incredibly hard.

      2) And that problem goes away when you're not using an IDE? Your magic compiler can somehow identify the exact line, but the evil IDE monsters confuse and beguile it! Right?

  17. Hey remember the 8-bit 1970's and 1980's? by Orion+Blastar · · Score: 4, Insightful

    When BASIC was bundled with almost every 8-Bit computer sold in the 1970's and 1980's? It was the default language on most of the systems sold and other languages like FORTRAN, C/C++, Pascal, COBOL, etc had to be bought separately. So the el cheapo way to program was via BASIC. Many computer magazines issued BASIC programs in them and cross platform modifications for Apple //, Commodore 64, IBM PC MS-DOS, Atari 800/400, TRS-80 and TRS-80 COCO, TI 99/4a, etc that had BASIC default.

    Borland turned Turbo Pascal into Borland Delphi, but Microsoft turned GWBASIC and Quick BASIC into Visual BASIC. Then when Windows dominated the Visual BASIC took over C++ and Delphi, as it was easier to program in for managers to understand. I didn't program in Visual BASIC because I liked it, I programmed in it because the job required me to do so. My managers didn't understand Java, C/C++, Python, Perl, PHP, etc, only BASIC and Visual BASIC, so they didn't trust programmers to write with anything else. Most of the Microsoft Windows IT/IS departments are run almost the same way and most of them use Visual BASIC (or in some cases Visual C# as it is easier than C++) because it is easier for management to understand what their programmers are doing and review code.

    You don't earn money programming with your choice of a programming language, you earn money with a programming language that your employers choose for the jobs that are available in your area. Unless you want to migrate to a Linux or Macintosh IT/IS department, but sometimes you have to settle for a Visual BASIC development job and have no choice in the matter.

    Just that now Microsoft Programmers are catching on that Dotnet is rotten, and if corrupt any program written to use it won't work.

    --
    Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
    1. Re:Hey remember the 8-bit 1970's and 1980's? by rrohbeck · · Score: 1

      A-men.
      I've seen two projects fail because the manager came from that kind of background. A couple millions later several people were fired.

    2. Re:Hey remember the 8-bit 1970's and 1980's? by Orion+Blastar · · Score: 1

      Then you should like this cartoon. I strongly suggest that it become a Slashdot Classic Cartoon reference that gets linked to every time one references the input of management or ideas or designs of management.

      --
      Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
    3. Re:Hey remember the 8-bit 1970's and 1980's? by gbjbaanb · · Score: 1

      Visual BASIC took over C++ and Delphi, as it was easier to program in for managers to understand

      Amen. I still remember a manager of mine who got himself a copy of VB, threw together a form and then started talking that programming wasn't so difficult, and why was he paying us programmers so much when coding was so simple anyone could do it.

      He never did make that simple form do anything useful, of course.

  18. Re:Programmers I've worked with by the_povinator · · Score: 2, Funny

    The biggest posers I worked with used Visual Studio. The best group of programmers I worked with used text editor. That group could code rings around VS. The best of the best of them used vi.

    I'm a great programmer and I use emacs, you insensitive clod!

    --
    The .sig is dead, and I believe I had a hand in killing it.
  19. My lawn by EsJay · · Score: 1

    Get off it That is all

  20. The most important question however is by ChienAndalu · · Score: 5, Insightful

    do they use vim or emacs now?

    1. Re:The most important question however is by Anonymous Coward · · Score: 0

      Most devs at MSFT (those who don't use Visual Studio) use emacs. However Visual Studio is far more widely used (not necessarily for the IDE, just the fact that it's a fine, programmable editor that offers lots of Windows conveniences -- and you can use it without using the IDE.)

    2. Re:The most important question however is by shutdown+-p+now · · Score: 1

      Don Box and Jeffrey Snover both work on .NET projects (Oslo and PowerShell, respectively), so I'm virtually certain they use Visual Studio.

      Butler Lampson is a researcher in Microsoft Research. I don't know what his present project is, so hard to say.

      Also, I've heard that a lot of people who have to deal with really large amounts of C++ code like Source Insight - apparently its symbol indexing blows everything out of the water performance-wise.

    3. Re:The most important question however is by Anonymous Coward · · Score: 0

      SourceInsight has been far more popular than emacs, in my experience. I have seen emacs used, but it's basically between SourceInsight for its symbol indexing, vs. Visual Studio for its easy-to-use integrated debugger. People who use WinDBG all the time rather than just when they have to, will tend to choose SourceInsight.

    4. Re:The most important question however is by JamesP · · Score: 1

      Funny you mention that.

      (friend of a friend story) about a guy who used to work for a linux distribution, went to work for MS and, guess what, he uses Emacs!

      --
      how long until /. fixes commenting on Chrome?
    5. Re:The most important question however is by Blakey+Rat · · Score: 1

      (friend of a friend story) about a guy who used to work for a linux distribution, went to work for MS and, guess what, he uses Emacs!

      And... what am I supposed to feel about that? Shock? Surprise?

      It reminds me of when that Microsoft employee took pictures of a truck delivering Apple G5 computers to the Microsoft campus, and the entire blogosphere went crazy over it-- apparently nobody stopped to think that Microsoft writes software for Macintosh, OF COURSE THEY HAVE MACS! How else would they test it!? Or write it?! God that was stupid.

      Your little insight here gives me the same vibe.

    6. Re:The most important question however is by cpghost · · Score: 1

      How else would they test it!?

      They test it?

      --
      cpghost at Cordula's Web.
    7. Re:The most important question however is by Anonymous Coward · · Score: 0

      Probably ed.

  21. Good debugger by jpmorgan · · Score: 2, Interesting

    Intellisense is pretty slick, but overall if I'm doing development on Windows I'd rather use an emacs as my text editor.

    Of course, Visual C++ makes a fantastic debugger. It's almost good enough to forgive Windows for its lack of valgrind. Almost.

    1. Re:Good debugger by Pharago · · Score: 1

      intellisense it's broken, has always been broken and i think it will always be, i hate having to delete that damn .ncb file once in a while just to fix it

    2. Re:Good debugger by VertigoAce · · Score: 1

      For what it's worth, the VC++ team is getting rid of the NCB file in VS 2010. Here's a follow up post with some more details on the new architecture behind intellisense: http://blogs.msdn.com/vcblog/archive/2009/05/27/rebuilding-intellisense.aspx

    3. Re:Good debugger by shutdown+-p+now · · Score: 1

      intellisense it's broken, has always been broken and i think it will always be, i hate having to delete that damn .ncb file once in a while just to fix it

      NCB files, and the associated woes of corrupted (and not auto-recovering) symbol index are gone in VS2010. C++ intellisense was rewritten effectively from scratch to make it work properly, and give useful results even for complicated scenarios like Boost.Lambda.

    4. Re:Good debugger by Pharago · · Score: 1

      that might be right, but they took 10 years to build a good VC since VC6, what makes you think they are going to do it 2 times in a row?

    5. Re:Good debugger by Pharago · · Score: 1

      the debugger is the best ive ever seen, and ive seen them all (gnu ones too), and the main reason i switched from vc6 to vc9, for those linux acolytes vc9 is the one inside VS2008

  22. Not a surprise at all by Pharago · · Score: 1

    The point its easy to spot, which language is used to code kernel libraries? core operating system parts? drivers? big name applications? .net? i dont think so. if you dont mind, ill stick to my c/c++ coding practices for the time being, and btw me thinks vc9 is the new vc6, just saying

  23. Re:Programmers I've worked with by Abcd1234 · · Score: 5, Insightful

    The biggest posers I worked with used Visual Studio. The best group of programmers I worked with used text editor. That group could code rings around VS. The best of the best of them used vi.

    This is absurd. Visual Studio, Eclipse, Vim, these are fucking *tools*. People use tools, not because the people are better, but because they find the tools useful.

    Me, if I'm writing code for Unix or my DS, yeah, I prefer a maximized xterm, GNU Screen, and Vim. But if I'm writing a .NET application, I'm gonna use Visual Studio, as it's a very powerful development environment (doubly so when coupled with ViEmu).

    OTOH, people who judge others based on their choice of IDE? Those people *are* tools...

  24. Rather smug, I think. by KingSkippus · · Score: 5, Insightful

    The original article and the summary both come of as rather smug to me. The truth of the matter is that you need both low-level nitty-gritty programming and high-level programming. It depends on what you're using it for.

    Think of it this way. You have people who make pipes. You know, the kind used in plumbing. Fittings, too. And they're very good at it. If you take your average house builder and try to get him to make a pipe, he'll be hopelessly bad at it. But you know what those guys who build houses are good at? Putting the pipes together in meaningful ways to get what they need (i.e. building a house) done. Take a guy who's brilliant at making pipes and fittings and try to get him to build a house. Yeah, not such a superstar now.

    It's the same with programmers. Tell someone who is very good at writing low-level code, "I need a killer efficient compiler." Give them enough time, and they can churn it out and make it wicked optimized. Tell them, "I need a new type of control that works in this specific way and with crucial efficiency," and they're your guys. Tell them, "I need an new application entirely from scratch that can process my specific business logic, it needs to look and feel like a standard Windows application, it needs to be easy for end users to figure out and work with, and we need a working version in a couple of weeks," and they'll probably laugh at you. Yet that's what those people they're looking down on, the people developing with higher-level abstracted languages, are doing every day.

    In my experience, competence != usefulness. They're not opposites, mind you, but it takes both types. It takes the people who work with the low-level nitty-gritty stuff, and it takes the people who use what they churn out to actually accomplish real-world productive things. One isn't smarter, one isn't better, neither should be looked down upon. Both are necessary.

    1. Re:Rather smug, I think. by Anonymous Coward · · Score: 5, Insightful

      Also, experience has taught us that even elite programmers make errors, and the most common categories of errors happen to be of the kind that can be prevented by designing your language or platform properly. This results in enhanced reliability, security and performance, due to the lack of null-pointer dereferences, buffer overflows, memory leaks, and so on and so forth. Now, I'm not saying that you therefore have to use Dotnet; I'm not really a fan of having to install yet another disk space munching VM, when I already need Java (among other things) for my studies and to run a few handy free tools that I depend upon to handle certain parts of the life I enjoy efficiently. However, I can say that if Microsoft, and programmers across the globe, would deprecate and replace old APIs that for example use uncounted strings, non-garbage-collected memory, and so on, the world would be a better place. And you don't need Dotnet or Java - you can do all of these things in plain C++ or macroassembler if you want.
      "Managed code is like antilock brakes. You used to have to be a good driver on ice or you would die. Now you don't have to pump your brakes anymore."
      Not particularly funny, and not an argument to go back to the olden days. Quite the opposite.

    2. Re:Rather smug, I think. by shutdown+-p+now · · Score: 2, Informative

      Now, I'm not saying that you therefore have to use Dotnet; I'm not really a fan of having to install yet another disk space munching VM

      That choice has already effectively been made for you - Windows comes with some version of .NET since Win2003.

    3. Re:Rather smug, I think. by Anonymous Coward · · Score: 0

      Yeah, no. I've never met a low level guy that couldn't mash his way through a high level language to process business logic. A better analogy would be to compare a low level guy with a javascript interface guru. That voodoo is crazy enough to require one to have some mad skills to tame without a library.

    4. Re:Rather smug, I think. by gmack · · Score: 4, Insightful

      Just because you don't know how to use non garbage collected memory does not mean that functions that don't use it should be phased out. Garbage collection trades safety for flexibility and if you remove the flexibility you will find a whole class of programs that would be a lot less efficient. These days there is a lot of work being put into making things like NULL pointer bugs and memory overflows simply crash instead of allowing a backdoor into the system and for some programmers crashing vs running slow is a good trade off

      I need those functions to do my job since I write network based apps that require memory reuse and pointers to be able to process data as quickly as possible.and I've seen the results when some of our competition has attempted to do my job with garbage collected languages. (generally 3x the hardware requirements, 5x if they used java)

      Not everything is a desktop application.

    5. Re:Rather smug, I think. by PitaBred · · Score: 2, Insightful

      It's actually a good argument. With antilock brakes, most any moron can maintain control of their vehicle in panic-stop situations. The trade-off is that stopping distance is increased. So, sure, go without ABS if you're skilled enough to do so. You'll get some extra performance when you're racing. But if you're just driving to the grocery store in the winter? I'd hope that most of the soccer-moms on the road with me have ABS.

    6. Re:Rather smug, I think. by Sjefsmurf · · Score: 2, Insightful
      Ah... yes...

      but what happens when the house plumber does not understand the materials and tools he is using? 3 months later... poooooofffff... water all over the place.

      sizzle, spark, kawoff.... the whole house is in flame from the electrical short circuits caused by all the water on the electric wiring done by the unqualified electricians.

      The nasty truth is that you will never design the underlying stuff well without having a decent knowledge of how it is used, and you can never use things well without having a decent understanding of how things works (with some limitations of course, I don't expect you to know assembly code of the windows bootstrap to be able to use Word well).

    7. Re:Rather smug, I think. by Anonymous Coward · · Score: 0

      You know, as something of a low-level "bits and bytes" programmer myself, I see arguments along these lines in proggit comment boards all the time, but it always comes across as a bullshit way for enterprisey business programmers and PHP-slinging web programmers to excuse themselves for their own ignorance regarding the underpinnings of the systems they use every day. Sure, you say "neither should be looked down upon", but that's just what you've done with your description. I don't doubt that you guys work on very complicated systems, and that there's something of a learning curve before you can work on them competently, but I'm less convinced that most of that complexity is really necessary (particularly given that business apps used to be written in COBOL of all things, and I don't think the fundamentals of conducting business have changed unrecognizably in a few decades) versus a product of social issues, network effects, and the compounding of poor technical decisions - particularly when every layer of "abstraction" underneath - essentially being someone's cute (but not perfectly conceived or implemented) idea that you're now dogmatically locked into using as though it were the perfect solution for all situations - serves to multiply the amount of bullshit hoop-jumping separating you from the problem you're trying to solve, and compounding the difficulty of the corner cases where the pieces don't quite fit together. Sometimes I think that most of the advances in computing power and programming languages (these higher-level abstracted languages you mention, some of which I'm quite fond of) in the last twenty years are usually squandered on making the programmers driving them feel clever, rather than directed toward any productive end. I have no objection to solving routine business problems - I want to write software that is useful and appreciated by its users, regardless of type - but if it means working in a cube farm on a team of .net-pushing pinheads with a shitty design and requirements handed down from above, whose idea of design sophistication is how many layers of indirection they can stack and how tall they can make the class hierarchy, I'll stick to my "low-level" work thanks. I've worked on assemblers, compilers, GUI toolkits, friendly desktop apps, network servers and proxies, and the odd web app or two, in everything from assembly language to C++ to Lisp to Python, and any competent programmer can do the same. As Heinlein said, "specialization is for insects" - so stop using your own inferiority complex as an excuse to pigeonhole yourself and others.

      Also, incidentally, the "killer efficient compiler" you mention will probably be algorithmically sophisticated far beyond anything you ever see while implementing your "specific business logic" (seriously, read some books on modern compiler design), rather than what you appear to dismiss as an exercise in making simple code run really fast. Efficient or "low-level" code is a result of thinking clearly and avoiding the tilting at windmills which plagues the industry. That said, it does indeed "take both types", and I salute you for your willingness to wade in feces for a paycheck on a daily basis.

    8. Re:Rather smug, I think. by Anne+Thwacks · · Score: 1
      As someone who writes assember and PHP for a day job, I want a tool that allows me to code PHP by throwing cow dung at the screen with my Wii remote, and another that allows inserting ASM statements with a craft knife using my Afro-American-Berry trackerball.

      Or maybe a double brandy.

      --
      Sent from my ASR33 using ASCII
    9. Re:Rather smug, I think. by Ralish · · Score: 1

      Correct, but interestingly enough, the Windows Server versions (definitely 2008 and on, possibly 2003) do not have it installed by default. In Windows Server 2008 and R2 it is one of many "Features" which you can choose to add to the server if you need it or as required as a dependency. It's unfortunate, as Windows Server 2008 and onwards has always seemed to be more "componentised" than its desktop counterpart, which takes more of a "install almost everything and remove stuff you don't want approach". I guess from Microsoft's view it's an ease of use argument but there are things in Windows Server 2008 that are not only not installed by default, but can't be removed at all on the desktop variant.

    10. Re:Rather smug, I think. by hde226868 · · Score: 2, Informative

      Sorry, while I agree with your programming statement, please be aware that with antilock brakes in most situations the stopping distance is decreased, not increased as you claim (see, e.g., http://www.abs-education.org/faqs/faqindex.htm). The reason is that usually you have better traction when your wheels are rolling, not when they're blocked. It is only in very rare situations that you'd be better off without ABS. So you want ABS even for good drivers since as a human you just aren't fast enough to modify the braking force on the wheels to keep them from blocking.

    11. Re:Rather smug, I think. by msclrhd · · Score: 1

      Also, garbage collection only works for memory. If that block of memory holds a resource (file, window, ...) you still need to explicitly release the resource.

    12. Re:Rather smug, I think. by Xest · · Score: 1

      Yep, I agree it may be preferable to not bother with an IDE for some stuff, but if you don't use Visual Studio for developing say as an example, ASP.NET MVC apps then you're just being a waste of space basically. There's no real advantage to not using it for that type of app and you'll see a massive productivity decrease if you don't.

      It really depends on the apps being built.

      I agree with your last paragraph also but I don't think competence is the right word, there's this idea that assembly programmers are somehow better and more competent than again, say, high level web devs, but really, having done both there's no less complexity in building a scalable distributed web application that requires proficiency in technologies and standards (HTTP, XML, WSDL, UDDI, SQL etc.). You've then got to understand the way the web server in question handles concurrency, you've got to understand higher level security threats (SQL injection, XSS).

      The fact is nowadays, whilst things have become more abstract, the amount of abstract technologies that good developers need to understand is so vast, there's certainly no more complexity, level of skill and knowledge required at the high end than there is at the low end. Realistically, if someone is competent enough to get their head around all the high end abstracted layers and technologies that are needed for modern large scale apps, then there's no reason they couldn't also get their head around low level assembly development as well and vice versa.

      Whilst there are many web developers who wouldn't touch assembly, I have also encountered quite a few lower level developers (ASM, C etc.) that have this attitude that because they work at low level are awesome, but have then had some reason to build a web application that they've hacked together in PHP and it's the most god awful insecure, unmaintainable piece of crap you'll ever see, often with the wheel reinvented multiple times within.

    13. Re:Rather smug, I think. by Anonymous Coward · · Score: 0

      Quite. Memory management is only class of resource management problem. There are still plenty of ways of screwing up in a managed environment: blowing the stack with a recursive function, exhausting all available file handles, deadlocking while attempting to acquire external resources, mapping an object into memory and forgetting to *un*map it...the list goes on.

    14. Re:Rather smug, I think. by Anonymous Coward · · Score: 0

      While that may be the theory, in the tests I have seen stopping distance has increased with ABS, though only slightly and with the advantage of still being able to control where you are going. Intermittent braking however basically combines the disadvantages of both.

    15. Re:Rather smug, I think. by David+Gerard · · Score: 1

      As you know, most PHP code appears to be written this way. (As, looking at the code, is much of PHP itself.)

      --
      http://rocknerd.co.uk
    16. Re:Rather smug, I think. by Sique · · Score: 2, Insightful

      In practice, with the advent of ABS, most people drive faster, thus the general braking distances might be longer. But from the same speed, there is only one situation where an ABS causes longer braking distances: If the ground is not solid, but consists of sand, gravel or freshly fallen snow: Then blocking wheels will cause a fair amount of material to collect in front of the wheels and thus causing better contact to the ground.

      --
      .sig: Sique *sigh*
    17. Re:Rather smug, I think. by ultranova · · Score: 3, Interesting

      Just because you don't know how to use non garbage collected memory does not mean that functions that don't use it should be phased out.

      Nice ad hominem. But the issue isn't whether he can use it, the issue is whether everyone who's code is running in the machine can use it, especially the guys who wrote libraries.

      I need those functions to do my job since I write network based apps that require memory reuse and pointers to be able to process data as quickly as possible.and I've seen the results when some of our competition has attempted to do my job with garbage collected languages. (generally 3x the hardware requirements, 5x if they used java)

      This is a strange statement. Garbage collection in no way prevents memory reuse; it simply automatically releases blocks of memory when they can't be accessed by following pointers from the root set anymore. In fact there's garbage collection libraries for plain C, some of which don't even require recompilation of applications but simply replace malloc() and free().

      Besides, network applications are precisely those where it might be worthwile to use 5x hardware just to get some extra protection.

      Not everything is a desktop application.

      /blockquote>

      True. Not every application has someone babysitting them all the time and validating all their inputs.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    18. Re:Rather smug, I think. by peragrin · · Score: 1

      Ah but that is the point MSFT has built a business that caters to those who won't upgrade to the latest API's. Apple Does though and look at all the crap they get when they try to push those updated API's on programmers. Apple is doing just what you suggest. not by using a pure managed code, but by using a hybrid.

      So just remember Apple catches flak from developers for pushing through updated api's(safer is relative) MSFT catches flak for allowing win9x api"s in windows vista(I haven't tried 7 yet) Linux catch's flak for just about everything in between

      --
      i thought once I was found, but it was only a dream.
    19. Re:Rather smug, I think. by Rexdude · · Score: 1

      Why stop at using text editors and commandline C/C++? Take the whole damn argument to its logical conclusion, and use this to do your coding:

      http://dougbarton.us/images/supercoder.jpg

      --
      "..One hosts to look them up, one DNS to find them, and in the darkness BIND them."
    20. Re:Rather smug, I think. by Rockoon · · Score: 1

      Also, garbage collection only works for memory. If that block of memory holds a resource (file, window, ...) you still need to explicitly release the resource.

      This is true but fails to mention that these modern managed languages also give you all the tools you need so that when the garbage collector comes around to clean up, it calls your destructor first.

      There are many unmanaged languages with destructors.. but the programmer can fail to call them. Managed languages dont fail to call them unless something unrecoverable happens.

      --
      "His name was James Damore."
    21. Re:Rather smug, I think. by gbjbaanb · · Score: 1

      uncounted strings - you mean copy-on-write reference counted ones that require quite a lot of thread safety code inside them (or its a disaster). Some things may seem like an optimisation, but aren't.

      Same for non-garbage collected memory. At least those apps don't seem to chew up megabytes of RAM unnecessarily. Again, its not necessarily better.

      A better car analogy would be automatic transmission. You don't have to learn how to shift gears, but you do lose on fuel efficiency. Once upon a time nobody cared, but that's not so true today.

    22. Re:Rather smug, I think. by Anonymous Coward · · Score: 0

      Ya. Smugness is rampant in IT in general. This is the tired old "I keep it real" crap. I once met a guy who told me that he surfed the web using only Lynx...unless it was pr0n, seriously. But I agree with what you're saying. We need the old wizard in the cave who creates incredibly great code using vi on his/her ancient Sun Ultra, but we also need the programmer who wouldn't think of even writing hello world w/out his/her GUI IDE. We have both here at work and neither one can do what the other does.

    23. Re:Rather smug, I think. by dave562 · · Score: 1

      Windows Server takes a more security centric approach to things. After getting raked over the coals for installing everything and leaving the server wide open to attack, they went the opposite way. Now the server just installs with a bare minimum to get it running.

    24. Re:Rather smug, I think. by Com2Kid · · Score: 1

      The truth of the matter is that you need both low-level nitty-gritty programming and high-level programming. It depends on what you're using it for.

      One time I wrote a Python program to generate assembly code. Combined the two in a way that I don't think they were supposed to be combined. :)

    25. Re:Rather smug, I think. by abarrieris5eV · · Score: 1

      And yet, somehow I suspect that the metallurgist working for the stainless steel pipe and fitting company might object to being called a "plumbing guy".

    26. Re:Rather smug, I think. by abarrieris5eV · · Score: 1

      ooops... wrong thread...

    27. Re:Rather smug, I think. by gmack · · Score: 1

      You can't even prove with 100% certainty that managed applications don't have security bugs. The last three security audits that I got to read all had to do with breakins using web apps written in managed code. Care to take a guess how they found them? The boxes were spewing spam like crazy.

    28. Re:Rather smug, I think. by Mr+Z · · Score: 1

      Well, in languages such as Java, the finalize() method may never be called. You have to manually call a "close"/"destroy" type method since finalize() isn't really a destructor. Even C# recommends you implement explicit destruction (See "Explicit Release of Resources" in the linked page.) I quote:

      The programmer has no control over when the destructor is called because this is determined by the garbage collector. The garbage collector checks for objects that are no longer being used by the application. If it considers an object eligible for destruction, it calls the destructor (if any) and reclaims the memory used to store the object. Destructors are also called when the program exits.
      [...]
      If your application is using an expensive external resource, we also recommend that you provide a way to explicitly release the resource before the garbage collector frees the object.

      In other words, the lazy destruction in a "managed" language can really bite you in the hindside, since who knows when the GC will get around to releasing your resource? Why else would a managed language have an entire standard interface devoted to the problem?

      In contrast, in C++ (an unmanaged language), objects' destructors are always called automatically when they go out of scope or when you delete them.

    29. Re:Rather smug, I think. by plover · · Score: 1

      I'm guessing you haven't met these guys.

      Most of them actually do eat their own dog food for breakfast, lunch and dinner. The language authors are actively writing application code using their own languages. The tool builders are building their projects in their own tools.

      Whenever I've met with any of them, they've been universally polite and friendly. They're not condescending, they're just genuinely interested in getting you as excited about their work as they are.

      I'd say these people are confident of their skills, not smug, and that they have absolutely every right in the world to be confident.

      Your analogy of "people who make pipes" vs. "house plumbers" is close, but flawed. These guys were indeed the "house plumber" kinds of people, and they are masters of the house plumbing trade. After years in the business, they've invented new tools and new fittings to solve real-world problems they've encountered. And they're smart enough to realize the need for a "generic" design that helps everyone plumb better, and to not settle for a specific solution to a one-off problem. So they design and create a new solution, and it is so useful it is adopted by plumbers everywhere. But to think that they couldn't still go back and plumb a house better than 99% of the tradesmen in the business is a mistake.

      --
      John
    30. Re:Rather smug, I think. by Zalminen · · Score: 1

      But from the same speed, there is only one situation where an ABS causes longer braking distances: If the ground is not solid, but consists of sand, gravel or freshly fallen snow

      ...which are all pretty damn common in some countries.

      I still prefer ABS but that's hardly 'only one situation'.

    31. Re:Rather smug, I think. by Anonymous Coward · · Score: 0

      There will never be a proper replacement to integrating C++ memory management into the constructor and destructor. Whether your object is stack or heap based, the constructor and destructor can be coded to handle your memory. I am an old C programmer converted to C++. When I finally "got" that my constructors and destructor's played important roles in how memory is allocated and released, I passed a milestone in my thinking. The real problem we face is a thinking problem that is only corrected by experience. Garbage collection reinforces bad thinking. It doesn't allow us to experience the situation which needs to implement proper memory management. I am glad that I started coding before garbage collection was mainstream. I may have missed out on one of the most beautiful symmetries of C++.

  25. Dear Computerworld... by TheModelEskimo · · Score: 5, Funny

    Our programmers are getting a bad rep because of our coding-for-weenies tradition. Can you please run an article that makes Microsoft programmers look like total badasses?

    XOXOXO
    -Steve B.

  26. Danger: Watch for rocks. by asackett · · Score: 1

    Uh, with all due respect: To say that "the distinct line between what is a program and what is pure data is blurred beyond recognition" merely proves that you've never understood the difference.

    --

    Warning: This signature may offend some viewers.

    1. Re:Danger: Watch for rocks. by TapeCutter · · Score: 1

      Hint: BadAnalogyGuy is slashdot's answer to the onion.

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    2. Re:Danger: Watch for rocks. by asackett · · Score: 1

      How did I not know this? Oh, wait... it's because I mostly quit reading the comments years ago.

      Thanks for setting me straight!

      --

      Warning: This signature may offend some viewers.

    3. Re:Danger: Watch for rocks. by mhelander · · Score: 1

      How so? And what *is* the difference, then, between a program and pure data - also, of course, with all due respect?

  27. Re:Programmers I've worked with by kybred · · Score: 1

    The biggest posers I worked with used Visual Studio. The best group of programmers I worked with used text editor. That group could code rings around VS. The best of the best of them used vi.

    I'm a great programmer and I use emacs, you insensitive clod!

    I don't know that I would say I'm a 'great' programmer, but I do OK. I use VI, but have great respect for emacs users.

    Most (all) of my co-workers use a nice IDE editor. I think it's a good code browser but I'm much faster editing with two or three gVim windows than I am with the IDE.

    A cow-orker of mine is pretty good using Visual Studio to create apps, but he has no clue about making things thread safe. Causes very hard to find problems.

  28. Re:Programmers I've worked with by icebraining · · Score: 1

    Supposedly through either Vimplugin or Eclim you could get the advantages of both, but I couldn't get them to work :(

  29. Those silly Rascals by Anonymous Coward · · Score: 0

    Speaking of the article title, "Microsoft's Top Devs Don't Seem To Like Own Tools," the devs at Microsoft don't even use a publicly released version of Visual Studio. They use a special stripped down version called Rascal with most of the "features" removed, because the public version is too much of a system behemoth for them.

    1. Re:Those silly Rascals by pclminion · · Score: 1

      It's called Razzle, not Rascal. It basically means "top of tree" and it changes on a daily basis. Razzle has nothing to do with Visual Studio.

    2. Re:Those silly Rascals by Anonymous Coward · · Score: 0

      It's called Razzle, not Rascal. It basically means "top of tree"...

      Are Microsoft sure about that?. Oh lord...

  30. If not DotNet, do they prefer the MFC Cruftorama? by Latent+Heat · · Score: 1
    If these guys don't like developing to DotNet, what do they use to develop for Win32?

    Do they use MFC, with its cruftology of C++ classes, templates, macros and You-Can't-Touch-This "wizard" generated code?

    Or do they use MFC with out the "wizard" code from an IDE?

    Or do they have their own C++ object library for Win32/COM/ActiveX that is not "out in the wild?"

    Or are they writing the Big-Fine-Case-Statement of Win32 programming under C?

  31. Leaks like a sieve by ToasterTester · · Score: 3, Interesting

    I'd be frustrated too trying to write code with tools that generate memory leaks for days and sucks at returning free'd memory to the system. I remember one version of Word you could start it up and just let it sit, within and hour or so Windows would crash. Then the version of Excel that shipped with debug code because the stripped version would never pass QA. Aw fine tools.

    1. Re:Leaks like a sieve by Anonymous Coward · · Score: 0

      I'd be frustrated too trying to write code with tools that generate memory leaks for days and sucks at returning free'd memory to the system. I remember one version of Word you could start it up and just let it sit, within and hour or so Windows would crash. Then the version of Excel that shipped with debug code because the stripped version would never pass QA.

      And Word and Excel are written in *drumroll* C++. D'oh.

    2. Re:Leaks like a sieve by Edgewize · · Score: 1

      Excel and Word are practically their own operating systems. You can't blame their problems on anything other than the insane legacy of backwards compatibility with a sprawling 20-year codebase.

    3. Re:Leaks like a sieve by jchillerup · · Score: 1
      I suspect the bug here is that Word95 would free a random pointer when started from a desktop shortcut. From the leaked Win2K source code, in private\ntos\rtl\heap.c,

      // The specific idiot in this case is Office95, which likes
      // to free a random pointer when you start Word95 from a desktop
      // shortcut.

      Sigh...

  32. Writing windows GUIs by NoYob · · Score: 3, Insightful

    When I have to write a Windows GUI app, C# rocks! I can design the UI whip off the code and be done with it. It's better than MFC and after writing countless message loops in win32 and OS/2 for that matter, I don't think writing more GUI boiler plate code, using the APIs to match resource IDs, and all that mindless coding will do any good - especially when I need the time to figure out an algorithm or other problems. And I can still do low level stuff (really low level) with P/Invokes, so the only thing I'm really missing out is busy work. And if there's a time when I DO need the control and abilities of unmanaged code, well there's the C++ stuff.

    --
    It's NOT me! It's the meds! I'm on 1000mg of Fukitol.
    1. Re:Writing windows GUIs by digitalunity · · Score: 1

      Funny you mention that. Programming Win32 message handlers during a high school programming class about 12 years ago is what originally drove me to Linux. I heard it "did programming".

      I didn't have money for Borland or MSVC and the school only had one computer with a compiler.

      --
      You can't legislate goodness. Let each to his own destiny, by will of his freely made choices.
  33. Don Box is a tool by Anonymous Coward · · Score: 0

    If ever there was a sign that Microsoft was on its way to circling the drain, it's Don Box being made a Distinguished Engineer.

    1. Re:Don Box is a tool by Anonymous Coward · · Score: 0

      Speaking as somebody who's programmed in COM, his title should be Grand Inquisitor.

    2. Re:Don Box is a tool by Anonymous Coward · · Score: 0

      Don Box had nothing to do with the creation of COM - he just wrote a book about it. He helped create SOAP and worked on Windows Communication Foundation (WCF) - both of which generated lots of buzz but ultimately didn't deliver. Just like Don Box.

    3. Re:Don Box is a tool by Traf-O-Data-Hater · · Score: 1

      Part of me agrees with this offhand statement. As someone who used to write C++ COM objects for banking risk management, I can honestly say COM is short for COMplex and COMplicated rather than Component Object Model. Table of vectors for function calls? Simple idea, terrible implementation. I spent more time doing the stupid COM plumbing then actually writing code that benefited the customer. And Don Box waxing lyrical about how wonderful and cool COM was in his book(s) just made me want to smack him in the face with a half-rotten tomato. At least one of the good things about .NET is that is works very well with legacy MS code, COM objects included.

    4. Re:Don Box is a tool by Anonymous Coward · · Score: 0

      Remind me of MS circle jerk with Don Box in the middle on how wonderful COM was in the previous decade. There's gotta a special place in hell for those cretins.

    5. Re:Don Box is a tool by Anonymous Coward · · Score: 0

      COM had some good ideas, but unfortunately it got derailed by the one-two punch of OLE/Active-X and Visual Basic. The former was responsible for phone books worth of APIs that nobody could understand, let alone implement in a robust manner, and after reading Kraig Brockschmidt's infamous MS Press book they understood even less. The latter gave COM IDispatch, dispinterfaces and dual interfaces, BSTR, SAFEARRAY, and VARIANT, and all manner of kludgy things. And, as Ted Pattison helpfully explained, once you've bought into writing apps that support all of that, COM's interface negotiation model became useless because VB 6 didn't support multiple dual interfaces from a single object.

      I think Don Box's part was to point out there was actually some decent architecture beneath all the layers of hackery.

  34. Should have been in the original article. by elamdaly · · Score: 0

    Here's the actual roundtable for your viewing pleasure.

  35. And next week... by Anonymous Coward · · Score: 0

    we see a article about how Microsoft management decided to demonstrate that, however senior and important, developers DO have to watch what they say and respect the roadmap, at least in public, least they offend the egos of the management and marketiods... unless their management team is actually aware of how critical such skills are and how hard they are to replace. Somehow neither seems plausible.

  36. Unless I forced to, I would never touch those kits by Taco+Cowboy · · Score: 2, Interesting

    There are times I am forced to, like if I'm doing gaming video, I have to do it using the Direct-X toolkit.

    I mean, there is no other way around, since some users are using ATI cards and CUDA is useless on ATI GPUs.

    But on other projects, I do bare metals, and when I have the chance, I go assembly.

    --
    Muchas Gracias, Señor Edward Snowden !
  37. Wizards and bad APIs by surmak · · Score: 1

    My biggest complaint about Visual Studio is the horrible API designs that it fosters. Since the APIs is so difficult to use, and so poorly documented (I'm thinking ATL, and to a lesser extent MFC) the only effective way to use them is to take advantage of the hand-holding that VS provides.

    1. Re:Wizards and bad APIs by Anonymous Coward · · Score: 0

      Wizards are for making demos. They prevent clean code, refactoring, etc... Unfortunately, the frameworks have lots of bad interface decisions to to being targetted primarily at wizards (too many static classes/factories strongly connected).

      The wizards are also too slow for any real size project.

      If you use them, you are not a programmer, you are a visual studio administrator.

  38. Snap by Vamman · · Score: 1

    You mean this intellisense IDE I use almost everyday makes me a weenie? I rarely read something on slashdot that makes me irritated but this does. I started with C then moved to C++ then I learned BASIC then Visual Basic then Perl then more C++ then PHP then C#. I'm sure theres a bzillion C like languages I've learned in between learning the languages that make me money. Sometimes I find myself writing bare bones stuff, usually on *nix platforms. It takes me twice as long to write the same routines in that type of minimal environment then without a full featured IDE. I write win32 C++ using the latest VS and even mix mode libraries where I've bridged unmanaged code to work with managed code - no com required. When I want high performance I will switch back to the bare bones approach but when I need to get a job done quickly I am very thankful for modem advancements in programming sciences. These Microsoft programmers might very well be the elite of the elite but for the rest of us not writing operating systems - we don't really care.

  39. Interpretive dance? by Rufty · · Score: 4, Funny

    Don't know about interpretive dance, but I'm guessing that the MFC was written in abstract pottery.

    --
    Red to red, black to black. Switch it on, but stand well back.
  40. Ummm by Anonymous Coward · · Score: 0

    Are these some of the guys responsible for the sorry state of Windows security?

    In which case, why should I be listening to them?

    Or do they just blame management for their design mistakes... like I usually do.

  41. Re:Programmers I've worked with by MBCook · · Score: 2, Interesting

    The article didn't actually have much in it, it was Computer World after all, but it makes sense if you read it as visual programming tools instead of Visual Studio. The article seemed, as CW articles tend to, that it was a good article that was cut to 1/4 it's original size just because.

    With today's libraries, a half-decent IDE can make a huge difference in productivity. But the comment about zooming in and out makes perfect sense if you think of the "I'll drag an IF block here, then wire it to the blah field..." kind of visual programming. The kind that people are always trying to make so that programming will be available to the "everyman". The kind that never works.

    Hypercard is the closest I've ever seen this come to working well. It's so sad Apple never knew what to do with it. It was approachable, and for simple record keeping was rather easy. HyperScript worked very well and was extremely approachable, especially with it's ability to do things like "take word 5 of line 2 of textbox".

    --
    Comment forecast: Bits of genius surrounded by a sea of mediocrity.
  42. In other news... by Improv · · Score: 1

    Researchers have found Italians that don't like Spaghetti!

    --
    For every problem, there is at least one solution that is simple, neat, and wrong.
    1. Re:In other news... by Rod+Beauvex · · Score: 1

      I hear there are Asians that don't like rice.

    2. Re:In other news... by Improv · · Score: 1

      Do they take the bus?

      --
      For every problem, there is at least one solution that is simple, neat, and wrong.
  43. Re:Programmers I've worked with by Paxton · · Score: 1

    I use vim. But you know, I have respect for emacs users too. How could anyone crazy enough to use emacs ever be productive at any other endeavor? I mean, emacs usage and mouth breathing are really the extent of their capabilities.

  44. Re:If not DotNet, do they prefer the MFC Cruftoram by shutdown+-p+now · · Score: 1

    Or do they have their own C++ object library for Win32/COM/ActiveX that is not "out in the wild?"

    WTL originated in Microsoft, which may well be the answer to your question.

  45. Problem with him, or with threads? by tepples · · Score: 1

    A cow-orker of mine is pretty good using Visual Studio to create apps, but he has no clue about making things thread safe. Causes very hard to find problems.

    Is that a problem with him, or is it a problem with the thread model in general, as opposed to an actor model or software transactional memory or multi-process architecture or some other non-thread concurrency model that I can't think of at 10:49 PM?

    1. Re:Problem with him, or with threads? by Abcd1234 · · Score: 1

      It's both. Writing traditional parallel code requires a certain level of expertise and experience. OTOH, STM, Actor models, or other modes of concurrency help to do away with some of that complexity... but it still requires expertise to make effective use of those multiprocessing models.

      Or: I don't think you can make concurrency easy. But you can make it easier (and safer).

  46. Re:Programmers I've worked with by timmarhy · · Score: 1

    thats funny, because people using vi are usually doing it just to prove how l33t their skills are, and hence are the biggest posers of them all.

    --
    If you mod me down, I will become more powerful than you can imagine....
  47. What's wrong with anti-lock breaks? by oljanx · · Score: 1

    Most drivers consider themselves good drivers. But most drivers are bad drivers. Anti-lock breaks save lives. Managed code saves billions in lost revenue every year. How many of you have seen a situation in which an in-house developer brewed their own solution, with disastrous results? Most I'll bet. Anti-lock breaks could have prevented that.

  48. Kissing Disease .NET by tepples · · Score: 1

    One of my PCs has a broken '.Net framework' which can't be fixed without a complete reinstall of the operating system [...] Fortunately I do most of my useful work on Linux or Solaris these days so not being able to run random Windows software is no big deal

    Have you tried these apps under Mono?

  49. kdawson by hlt32 · · Score: 0, Redundant

    Another anti-Microsoft "story" with no content from kdawson.

    --
    à_à
  50. Re:Programmers I've worked with by Anonymous Coward · · Score: 0

    I use an ide

    i cannot imagine doing real oo programming without the support from the ide
    I work on multi-agent system for cognitive assistance
    I have deep object hierarchy, I dont want to memorise that there is a static factory for a request message fifth class super me...
    I want to see what I can call here now

    I have a friend who do dsp works. He code in asm still he use a ide to see the register allocation and other usefull stuff as he code.

    But i feel that when the programmer from microsoft talk it was against case tool based on graphical programing

  51. wow Microsoft tools by Anonymous Coward · · Score: 0

    wow Microsoft tools are for tools what a surprise :X
    please tell me what else is new? what coconuts don't kill people?

  52. 99.99% by Anonymous Coward · · Score: 0

    I think it's safe to say that at least 99.99% of drivers *should* have ABS. And similarly, 99.99% of programmers should *not* be doing their own memory management.

    dom

  53. MinGW g++ produces bloated executables by tepples · · Score: 1

    I don't really see a need for a MS-C++ anymore when there are FOSS alternatives

    I tried MinGW. Hello World with <cstdio> was efficient as expected, but Hello World with <iostream> of GNU libstdc++ was roughly a quarter megabyte. When I mentioned this on Slashdot before, other users seemed to be of the opinion that the compiler and C++ library in Microsoft Visual C++ Express did a better job stripping dead code, resulting in a binary roughly one-third the size.

    Were you thinking of a different FOSS alternative for compiling C++ programs for Windows?

    1. Re:MinGW g++ produces bloated executables by shutdown+-p+now · · Score: 1

      Did you strip debug symbols from the executable produced by MinGW?

    2. Re:MinGW g++ produces bloated executables by skeeto · · Score: 1

      As the sibling said, try stripping the debug symbols. gcc stuffs its binaries with 'em. If I am not mistaken, it's a result of the philosophy behind gcc.

    3. Re:MinGW g++ produces bloated executables by tepples · · Score: 2, Informative

      Did you strip debug symbols from the executable produced by MinGW?

      Yes, I gave g++ the flags -s to strip debugging symbols and -Os to optimize for size. The <cstdio> version stripped down to 5,632 bytes, but the <iostream> version stripped down to 266,240. I investigated further, without the -s flag, and it turned out that whenever GNU libstdc++ creates an ostream, it also creates locale objects to represent date, time, and money formats, even if the program never outputs a date, time, or money object. Similar executable sizes were seen with devkitARM, a distribution of cross-GCC designed to target a handheld device with an ARM CPU and 262,144 bytes of main RAM: the executable hello-iostream.gba ended up 253,652 bytes in size.

    4. Re:MinGW g++ produces bloated executables by digitalunity · · Score: 2, Interesting

      Interesting. I have been writing Qt applications on Windows using MinGW for a while and just assumed my executables were huge because of Qt.

      I just tested what you said, whipped up Hello World using libstdc++ and got an identical byte size as your own. It was 474990 bytes with debugging symbols in it!

      I recompiled with -Os and stripped the executable and got it down to 265728. Jesus.

      --
      You can't legislate goodness. Let each to his own destiny, by will of his freely made choices.
    5. Re:MinGW g++ produces bloated executables by shutdown+-p+now · · Score: 2, Interesting

      Judging by what GP said, it seems to be a library problem, not the compiler problem. I assume the way they wrote formatting code for iostream somehow references all locale facets, triggering their instantiation.

      Still, iostreams are fat on any implementation Just checked on VC++2010 - with "optimize for size" it was 95Kb for a HelloWorld.

    6. Re:MinGW g++ produces bloated executables by TheThiefMaster · · Score: 1

      Still, iostreams are fat on any implementation Just checked on VC++2010 - with "optimize for size" it was 95Kb for a HelloWorld.

      Try it with the project set to static link the C++ runtime. Otherwise a lot of the code is going to be in the msvcrt??.dll instead of the executable, and it's not a valid test.

    7. Re:MinGW g++ produces bloated executables by Anonymous Coward · · Score: 0
      I've just tried on Linux with:

      $ cat hello.cpp
      #include <iostream>
      int main(void){
      std::cout << "Hello world!" << std::endl;
      return 0;
      }
      $ g++ -s -Os hello.cpp -o hello
      $ ls -l hello
      -rwxr-xr-x 1 user user 5604 2009-11-29 13:14 hello
      $ g++ --version
      g++ (Ubuntu 4.4.1-4ubuntu8) 4.4.1
      ...

    8. Re:MinGW g++ produces bloated executables by shutdown+-p+now · · Score: 2, Informative

      Try it with the project set to static link the C++ runtime. Otherwise a lot of the code is going to be in the msvcrt??.dll instead of the executable, and it's not a valid test.

      The test was for a statically linked binary (it's what you get by default when using cl.exe with no other options). Dynamically linked (/MD) one is 7Kb.

  54. Geographic area or field of endeavor? by tepples · · Score: 1

    You don't earn money programming with your choice of a programming language, you earn money with a programming language that your employers choose for the jobs that are available in your area.

    By "area" do you mean a geographic area or a field of endeavor?

    1. Re:Geographic area or field of endeavor? by Orion+Blastar · · Score: 1

      Both actually.

      --
      Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
    2. Re:Geographic area or field of endeavor? by tepples · · Score: 1

      you earn money with a programming language that your employers choose for the jobs that are available in your area.

      By "area" do you mean a geographic area or a field of endeavor?

      Both actually.

      But which to a greater extent?

      In the case of no programming jobs being available in a geographic area using a given language, that's little different from the case of no programming jobs being available in a geographic area period, such as somebody who was born in a small town. The same options are available: move or start a business. If that's not practical, I'd like to hear why.

    3. Re:Geographic area or field of endeavor? by Orion+Blastar · · Score: 1

      #1 No programming jobs being available in a geographic area using a given language. St. Louis, MO, USA is mostly a Microsoft shop, I knew Pascal, C/C++, Ada, 8086 Assembly Language, COBOL, FORTRAN, etc but my BASIC skills from the 1970's and 1980's got me learning Visual BASIC about 17 years ago. At one point I was able to use my C/C++ skills with one job, but most of my jobs were Visual BASIC because I couldn't find a job in my geographic area for my other skills. When I studied in college I tried to learn as many languages as possible to make it a better chance to land a programming job. My Non-VB programming friends ended up working as clerks or in retail stores as they couldn't find programming jobs for their languages they knew. Some other friends I had moved out of state to get the job with their language, but I never heard from them again.

      #2 Area of expertise, instead of being a programmer some of my friends opted for help desk, technician, and network administrator or database administrator instead. Like me they wear many hats and did more than just programming on the job. One job my OS/2 and Netware skills landed me the job, another my Unix and Linux and C/C++ skills as I noted above. I once worked as a PC Specialist, and another time I worked in a Help Desk for DSL support. This is due to no programming jobs being in a geographic area and having to settle for some other type of job.

      Actually they both not that practical because when you try to get a job with your default skill set you have more experience with, recruiters and potential employers will state that you did X type of Job and they are only hiring for Y type of job. You can answer back yes but I did Y five years ago, and settled for X when Y wasn't available. Then they might misjudge you and claim if you didn't get a Y type job, then you must not be that good at it. I've been there, done that, etc.

      Move or start a business, starting a business is easy, earning a profit is hard, earning enough of a profit to pay yourself a salary that can pay for a mortgage payment is even harder, harder still is earning enough profits to pay employees and branch the small business out. I've done that too, two small businesses I've formed in 1995-1997 and 1999-2000, they weren't profitable because my costumers weren't paying, and I found out that some people and corporations prey on small businesses because they haven't perfected their collections process yet and so the purchase order goes through with 90 days to pay, but 90, 180, 360, etc days go by with no payment and their A/P department refuses to give us even a penny in payments. Next time I'll pay for a credit card machine and not give 90 days to pay, but cash or credit up front. That is only because my old businesses got ripped off. Something to consider when starting up a business is method of payment and how you will collect for customers who either refuse to pay or don't pay and won't return phone calls, email, etc.

      --
      Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
  55. Re:Unless I forced to, I would never touch those k by Darkness404 · · Score: 3, Insightful

    I don't really see the point in using assembly anymore. Yeah, its fast. But, its also a total pain to port and sometimes to maintain. With predictions saying that ARM will eventually catch up to x86 within the next 5 years, the fact that an ARM version of netbooks could be coming, etc. I don't know why anyone would still program in assembly for anything other than, say, emulators which need to be built for speed.

    --
    Taxation is legalized theft, no more, no less.
  56. Own tools!? by v(*_*)vvvv · · Score: 1

    No real programmer really likes their tools. That is the punchline.

    And dead funny? I mean, they seem like fun loving people, but I'd stop at "funny."

    1. Re:Own tools!? by freedom_india · · Score: 1

      Programming in Assembler is like shaving your balls with a machete.
      If you are *really* careful, you can have a clean, smooth pair of balls.
      A slight hiccup, and you are without balls.

      --
      "Doing what i can, with what i have." ~ Burt Gummer
    2. Re:Own tools!? by Gorobei · · Score: 1

      No real programmer really likes their tools. That is the punchline.

      My team started writing an IDE a couple of years ago. The rules were simple: we are writing this for our users, so we use it. We started with an open source product, hacked in the extensions we initially needed, and within a month the developers were using the IDE 90% of the time. Today, it's up to about 99% of the time.

      If a developer ever claimed that he needed to go outside the IDE because XYZ was better, he got to integrate XYZ into the IDE.

      1 million LOC later, you can sit down at anyone's desk and do useful work: everything is there in the IDE, all apps run out of it, all data is available. Pretty much the definition of an "integrated environment."

  57. As it is , as it has always been by tuomoks · · Score: 1

    MS has probably / arguably more good designers and developers for software than any other company - IBM, Google, HP, Sun, etc and not counting the Japanese and Chines companies - Hitachi, Sony, Fujitsu - don't know the name of Chines companies but I know the people! The difference is - at BG time the (good/clever) people had at least some saying what, how, where, when - now, sorry, this is a corporate - you follow the rules and don't think! Let's see how long that lasts - if no changes I will give at most ten years (based on 35+ experience) - a side note, I loved Univac, Burroughs, Honeywell, some Wang ideas, DEC was superb, Prime before Cray, real object oriented at end of 60's way before it came a fad with technology not really supporting OO (always hilarious!),

    Actually - this has been the way forever(?) or at least since 70's - talk to the company and talk to the developers, you will often get a totally different picture! Guess which one I have always trusted and which one has always later one proven to be the correct one? I wonder why companies still go with the all bs. - and I always wonder why some / most customer management buys to that? Maybe some of Dilbert makes sense - well, maybe more than some.

    Back to topic - MS tools are not bad, actually (very) nice but geared to public, not real, hardcore developers. When you are "under the gun" - get something, working right, out - you either know what you are doing or you don't, there are no shortcuts! All and any (at least in last 35+ years) help tools, defaults, wizards, best practices, corporate standards, industry standards (of course commercial!), etc will not help - maybe that's why the MS developers don't like their own tools.

  58. notepad and vi are my main editors by Dan667 · · Score: 1

    for the most part I don't use development environments if I do not have to as I can work a lot faster without them. (then build with unit test, good to go).

  59. C on an 8-bit microcontroller? by tepples · · Score: 2, Interesting

    I don't know why anyone would still program in assembly for anything other than, say, emulators which need to be built for speed.

    How about programs designed to run in the same class of systems that such emulators emulate? There are dirt-cheap mass-produced computer-on-a-chip designs that connect an 8-bit CPU core clocked at under 5 MHz to a TMS9918-like video generator. You're dealing with something comparable to a Sega Master System or NES on a chip. C on a Z80 or 6502 isn't pretty.

    1. Re:C on an 8-bit microcontroller? by digitalunity · · Score: 2, Insightful

      Embedded development and bootstrapping is the last bastion of necessity in assembly.

      Any other use is likely for obfuscation, academia or pride.

      --
      You can't legislate goodness. Let each to his own destiny, by will of his freely made choices.
    2. Re:C on an 8-bit microcontroller? by Khyber · · Score: 3, Interesting

      "Embedded development and bootstrapping is the last bastion of necessity in assembly.

      Any other use is likely for obfuscation, academia or pride."

      Or speed where it matters, because nothing beats speaking in one's native tongue for communication.

      Which is why a many great deal of OS components are written in general x86 assembler.

      There's even an OS written entirely in Assembler, fits on a 1.4MB floppy, and does pretty much everything Windows does, faster, in a smaller memory footprint, and in 1/7,000th the space - minus gaming.

      IOW assembler is still plenty useful, not just for embedded markets or bootstrapping.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    3. Re:C on an 8-bit microcontroller? by bhima · · Score: 2

      If speed matters it's cheaper, easier, and faster to buy more processing power.

      --
      Nothing in the world is more dangerous than sincere ignorance and conscientious stupidity.
    4. Re:C on an 8-bit microcontroller? by Anonymous Coward · · Score: 1, Interesting

      No. Take a look at your local libc sources (if available). I bet you that a lot of the common string operations are written in assembly, hand-optimised to a precise CPU instruction set (I.e. SSE4.2 on newest CPUs)

    5. Re:C on an 8-bit microcontroller? by kailoran · · Score: 1

      If speed matters it's cheaper, easier, and faster to buy more processing power.

      Yeah, especially if you're developing software that's supposed to run on netbooks.

    6. Re:C on an 8-bit microcontroller? by Tapewolf · · Score: 4, Interesting

      Embedded development and bootstrapping is the last bastion of necessity in assembly.

      Any other use is likely for obfuscation, academia or pride.

      About this time last year I was told to implement (in a C++ app) something not unlike the IMPORT command in VB. In other words, it allows you to call an arbitrary DLL function from a script language in our application.
      Since we do not know at compile-time how many parameters are going to be passed to it, the only way I could think of doing this was to manually construct the stack into the required calling convention using PUSH instructions and do JMP EAX to call the function.

      It took about 10-20 lines of assembler. I then had to do a couple of alternative implementations to support win32, elf32, win64, elf64 and win32 on ARM for the PDA version, but since there wasn't much code involved, the whole exercise took about a week from nothing to fully working.

      Maybe there is a way to do this in C++ without resorting to assembler, and without requiring the called module to have a predefined interface, but I'm damned if I can think of one. To be fair, it is the only assembler module in the entire program.

    7. Re:C on an 8-bit microcontroller? by mhall119 · · Score: 1

      Which is why a many great deal of OS components are written in general x86 assembler.

      s/OS/Windows/ and you may be right, but even then the NT kernel was designed for portability, so I'm not so sure. But I'm sure there is a minimal amount of x86 assembler in OSX, Linux, BSD or Solaris.

      --
      http://www.mhall119.com
    8. Re:C on an 8-bit microcontroller? by mhall119 · · Score: 1

      I didn't see any assembly code in glibc's string operations. Looking over all of glibc's source, the assembly code seems mostly limited to the sysdeps and elf folders.

      --
      http://www.mhall119.com
    9. Re:C on an 8-bit microcontroller? by tepples · · Score: 1

      If speed matters it's cheaper, easier, and faster to buy more processing power.

      For how many people? If you develop software to distribute to the mass market, a lot of your customers would rather buy a $30 copy of a program to run on their existing computer than a $200 computer and $10 copy of a program.

    10. Re:C on an 8-bit microcontroller? by tepples · · Score: 1

      I bet you that a lot of the common string operations are written in assembly, hand-optimised to a precise CPU instruction set (I.e. SSE4.2 on newest CPUs)

      Does that work even if you're targeting generic i686, which only goes up to MMX? Does the speed gain outweigh the time overhead to check which instruction sets are available and the space overhead of multiple implementations, one for each instruction set?

    11. Re:C on an 8-bit microcontroller? by jimicus · · Score: 2, Insightful

      Embedded development and bootstrapping is the last bastion of necessity in assembly.

      Any other use is likely for obfuscation, academia or pride.

      If my employer is any guide. it's rapidly dying in embedded development. Processors are fast enough - and optimising compilers sophisticated enough - that assembler is simply unnecessary.

      I can't see assembler being in heavy use outside of ever more esoteric branches of embedded development over the next few years.

    12. Re:C on an 8-bit microcontroller? by Rockoon · · Score: 2, Informative

      Does that work even if you're targeting generic i686, which only goes up to MMX? Does the speed gain outweigh the time overhead to check which instruction sets are available and the space overhead of multiple implementations, one for each instruction set?

      When speed matters, runtime processor checking is a triviality. Think about it.

      Anyways, runtime cpu checking is normally only done once, often during program initialization.

      There is a reason that the fastest implementations of heavy-lifting algorithms (encryption, compression, etc..) are written in assembly, and its not because the compiler is only slightly sub-optimal. Its because the abstract machine model for the language simply doesnt contain the concepts necessary to describe the (presumed to be.. TANSTATFC) optimal process such as explicitly leveraging the x86 flags register and the instructions which manipulate it, which means that you cannot coerce the compiler to emit anything that even resembles the optimal process.

      "You can't get there from here."

      I'm sure there will be lots of posts about premature optimization. Those arguments apply to application development, but often not to library development.

      --
      "His name was James Damore."
    13. Re:C on an 8-bit microcontroller? by rodrigovr · · Score: 1

      You are pretty wrong.
      Take any serious OS out there and And please don't compare a 1,4mb OS with Windows, it supports a bare minimum hardware and you can compile linux to support many more hardware with the same size (excluding the apps).

    14. Re:C on an 8-bit microcontroller? by Khyber · · Score: 1

      As someone that has worked with Linux for several years, I only have one thing to say.

      "you can compile linux to support many more hardware with the same size (excluding the apps)."

      prove it and show me a distro under 1.4MB. Oh, and that 1.4MB OS I mentioned does EVERYTHING but gaming - that means video, audio, graphical work, web browsing, etc. Even Flash works in the 64-bit version of the OS - you can't say that with Linux.

      You can't prove it - the latest kernel's source alone is over 60 megs in size. When that compiles down, maybe it'll get to 6 megs like MicroCore Linux - you're STILL not close the the OS I mention.

      Oh, and it doesn't support a bare minimum of hardware - the generic assembly wrappers tend to make most ANY hardware work out of the box - oops, shows exactly what you know.

      Real men are talking - sit down and listen.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    15. Re:C on an 8-bit microcontroller? by Khyber · · Score: 1

      The old NT Kernel from NT4 was truly portable, after Win2K It became a predominantly x86 platform.

      Still got a DEC Alpha somewhere.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    16. Re:C on an 8-bit microcontroller? by Khyber · · Score: 0

      "If speed matters it's cheaper, easier, and faster to buy more processing power."

      Okay, tell that to NASA, who so far have done most of their science perfectly fine on sub-Pentium 1 class hardware.

      Real programmers don't need lots of hardware or abstracted interpretive languages.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    17. Re:C on an 8-bit microcontroller? by rodrigovr · · Score: 1

      You are talking about MenuetOS, right?

      It only supports VESA + Generic ATA + AC97 sound and NE2000 LAN. Less hardware support = less space.
      Any single floppy linux/*bsd can support this kind of hardware.

    18. Re:C on an 8-bit microcontroller? by larry+bagina · · Score: 1

      or fun. or better control. or a shitty compiler.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    19. Re:C on an 8-bit microcontroller? by bytesex · · Score: 1

      They do that because the i486 DX2 (I think) was a bug-free CPU that required no cooling. That's very nice in space.

      --
      Religion is what happens when nature strikes and groupthink goes wrong.
    20. Re:C on an 8-bit microcontroller? by Khyber · · Score: 1

      And they couldn't keep the bug-free design on for later processors? Holy shit.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    21. Re:C on an 8-bit microcontroller? by Khyber · · Score: 1

      Menuet supports more than that - every piece of hardware (minus webcam) works, including SATA and my SBLive! sound card. My onboard nVidia LAN works as well - if it's PXE capable you can get networking without drivers. It's a hack but it works for any PXE-enabled card.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    22. Re:C on an 8-bit microcontroller? by Nefarious+Wheel · · Score: 1

      There are some really powerful, tiny process controllers out there based on the Arduino chip - we're talking about useful little computers about the size of your thumbnail with a reset switch, a microUSB port and a line of connecting pads. 64k RAM. I hear there are a lot of libraries available for them, but personally I wouldn't feel comfortable programming for them without shifting into low gear a fair bit. A long time ago I programmed in C on comps that were about that size, I don't think the dynamics - or the optimising compilers - have changed all that much.

      --
      Do not mock my vision of impractical footwear
    23. Re:C on an 8-bit microcontroller? by hairyfeet · · Score: 1

      Actually if I remember correctly it was because the old chips are a LOT easier to harden from radiation than the new badass chips. I can't remember which one (The old P2 I think) but Intel just recently (2007) quit making one of those really old chips, which nobody had used for years....EXCEPT the military and NASA who used them because they were quite easy to harden.

      When you are talking about a chip going into deep space you have no idea how much radiation that thing will end up exposed to, and considering the cost per launch plus the cost per vehicle it is better to be hardened than sorry.

      --
      ACs don't waste your time replying, your posts are never seen by me.
    24. Re:C on an 8-bit microcontroller? by Mr+Z · · Score: 3, Insightful

      I'd call that "runtime environment glue" and that's an extremely appropriate place for assembly code in modern programming. You're quite literally outside the language at that point, when you have to manually manage the calling convention.

    25. Re:C on an 8-bit microcontroller? by PaladinAlpha · · Score: 1

      Yes, generic drivers can run components with generic interfaces. You are talking about a lowest-common-denominator driver model, and the performance you gain by using assembly is lost manifold by not supporting the specific feature sets of hardware.

      Look, I love writing in C because it lets me hit the iron. But in the real world, development time costs money, and even as a customer I'd rather have a slightly bloated (say) IDE tomorrow than use a pared-down platform-locked lean-and-mean that came out in two years and cost twice as much. Moreover, by the time it came out computer advancements would have made that bloated IDE less so.

      Yes, bloat is a disease. But so is over-optimization, and starting off with assembly is the worst symptom.

    26. Re:C on an 8-bit microcontroller? by ch0knuti · · Score: 1

      Could you name that OS? Not that I am doubting you or anything but I would like to check it out.

    27. Re:C on an 8-bit microcontroller? by yuhong · · Score: 1

      Yep, unfortunately Alpha was dropped at the last minute, like less than 6 months before Win2K RTM. But then came Itanium or IA64, and later AMD64 or x64.

    28. Re:C on an 8-bit microcontroller? by Ihlosi · · Score: 1

      Since we do not know at compile-time how many parameters are going to be passed to it, the only way I could think of doing this was to manually construct the stack into the required calling convention using PUSH instructions and do JMP EAX to call the function.

      Figure out the maximum number of arguments, and if that's not some overly large number, use a switch/case statement to make a call to the function using the appropriate number of arguments?

      Of course that'll result in longer and slower code than doing it in assembly.

    29. Re:C on an 8-bit microcontroller? by AmiMoJo · · Score: 1

      Actually embedded systems often require some assembler because they have to respond to external events near instantly.

      The AVR 8 bit family is a good example. Interrupts start executing code a maximum of 4 clock cycles after being triggered. You can write interrupt service routines in C, but even with optimisation they tend not to be as fast as assembler because the compiler doesn't have the ability to e.g. set aside registers for exclusive use by the interrupt or execute non-register-modifying instructions before saving registers to the stack.

      I still use pure assembler for a lot of AVR based projects, such as a Saturn to Playstation controller converter an an LED matrix clock. With the latter I tried C but the compiler couldn't optimise enough to get a 100Hz refresh rate, so I re-wrote it in assembler and now it manages 120Hz at about 50% CPU time.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    30. Re:C on an 8-bit microcontroller? by plague3106 · · Score: 1

      Idiot, they use sub-p1 class hardware because its been around a while and they know the hardware is reliable, not because they have "real programmers."

    31. Re:C on an 8-bit microcontroller? by flabordec · · Score: 0

      There's even an OS written entirely in Assembler, fits on a 1.4MB floppy, and does pretty much everything Windows does

      Crash? Display my windows in small semi-transparent thumbnails? Automagically configure ad-hoc wireless networks?

      --
      "I see undead people" Warcraft III - Necromancer
    32. Re:C on an 8-bit microcontroller? by Anonymous Coward · · Score: 0

      Varargs, broham. Varargs.

    33. Re:C on an 8-bit microcontroller? by Khyber · · Score: 1

      "You are talking about a lowest-common-denominator driver model, and the performance you gain by using assembly is lost manifold by not supporting the specific feature sets of hardware."

      Hate to say it but a lot of the 'featuresets' of a piece of hardware are add-on pieces of software that pretty much SUCK. Logitech webcams and Microsoft webcams are prime examples of this, with their insistence on forcing the camera to run through their effects processor, even if you're not using effects, and this slows down performance and introduces a lag between the audio and video stream.

      For "It just works" appealing to the lowest-common-denominator model is perfect for it. You get basic functionality, and you can enhance it later with your own code or someone elses code should you see the need to. No bloat, no excessive software packages, and no crap spewed everywhere across my system because someone doesn't have a clue.

      What's so bad about that? Sure maybe smoeone has a use for overclockign the GPU, but most people are perfectly fine with the basic functionality.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    34. Re:C on an 8-bit microcontroller? by Khyber · · Score: 1

      If they didn't have 'real programmers' I guarantee you that old hardware wouldn't be feasible to use in the first place.

      Tool.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    35. Re:C on an 8-bit microcontroller? by plague3106 · · Score: 1

      Right, because when the 486 was around, all we had was assembly. Nevermind that you can be just a bad a programmer in assembly as you can any other language. Just admit you don't know what you're talking about an move on.

    36. Re:C on an 8-bit microcontroller? by Khyber · · Score: 1

      Admit that I don't know what I'm talking about while I'm busy taking out Sony's hypervisor - using assembly. Sure, you keep telling yourself that. See, we used assembler back in the day because we had fairly limited hardware. If we didn't use assembly, we used FORTRAN or COBOL. Assembler code condenses quite nicely, which works perfectly for the hardware limitations we had back then.

      Oh, and before we had 486 processors, y'know, back in the 70s, we still went to space - using assembly and FORTRAN.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    37. Re:C on an 8-bit microcontroller? by plague3106 · · Score: 1

      Ya, you don't know what you're talking about. Clearly nasa isn't using 486s because they care about speed, its because they KNOW THE HARDWARE WORKS. It has nothing to do with "real programmers use assembly." I've programmed assembly too, who fucking cares? And for what its worth, I think they're now using pentiums (including p3s).

      You're nonsense about "real programmers use assembly" is just an ego-trip, because you feel somehow superior because you use assembly, meanwhile you're probably one of the fuckwits I mentioned that are still a shitty programmer.

      Please, get over yourself, I don't give a fuck what you use, because real programmers use the right tools for the job!

    38. Re:C on an 8-bit microcontroller? by MrResistor · · Score: 1

      If speed matters it's cheaper, easier, and faster to buy more processing power.

      Really? In lots of what size? Are you including the additional power requirements and other support structures this additional processing power requires into your calculations?

      Way to display a fundamental ignorance of basic economics.

      --
      Under capitalism man exploits man. Under communism it's the other way around.
  60. Microsoft's own apps aren't managed code by Anonymous Coward · · Score: 0

    The real story here is that Microsoft's own big commercial apps - MS Office, SQL Server, Exchange, Visual Studio, Visio - aren't coded in .Net (except perhaps for a few plugins and utility apps, an insignificant percentage of the codebase), and there have been no announced plans to port any of them from unmanaged C++. This is eight years after the introduction of .Net 1.0.

    Why not? I think commercial app developers need to throw this question in the faces of the "developers, developers, developers" marketing guys at MS.

    1. Re:Microsoft's own apps aren't managed code by KarmaMB84 · · Score: 1

      http://blogs.msdn.com/jasonz/archive/2009/02/20/a-new-look-for-visual-studio-2010.aspx If I'm not mistaken, Visual Studio 2010 will have a WPF UI including the editor.

  61. I've come to hate VS by wandazulu · · Score: 1

    Visual Studio, specifically VC++6, rocked in the days of writing Windows apps. I'm not talking about any specific library or technology (the C++ compiler had incomplete template support, for example), but the editor itself was just awesome. It was solid, never crashed (though I could get the compiler to crash if I just looked at it funny), and was fast fast fast. I may be a weenie, but I actually like the suggestion popups, tool-tips over the code, etc., as I can barely remember my kids names on a good day, let alone the parameters to BitBlt(). The only thing though is that it has to be fast...any delay over 1/2 a second and I'm stopping to look it up on msdn. With VC6, that almost never happened.

    Later versions, though, got seriously sluggish, and yes, ultimately it's just a glorified text editor, so why are all these windows sliding in and out at odd times, they rearranged all the project settings (why put the most important line for compiling (include header files) at the top, and then stick the same thing for linking somewhere near the bottom (not even *at* the bottom!)? Plus everything up to VS2008 has just been slow for me...from constant annoyingly-slow to wait-did-it-freeze-up-on-me-oh-no-it-just-came-back slow. Plus I've been able to crash pretty easily all of them to the point where, yes, I really do write a good amount of code in vim, then switch over to VS2008 when I want to compile or check something. It's just that painful.

    I have the beta of VS2010 and I actually like it...it feels more solid than all the previous versions, and I dare say it's kind of close to VC6 reliability. I'll be following that development cycle more closely...it'd be nice to have a decent windows dev tool again (well, one that speaks MFC and ATL natively....if I were doing straight or platform-neutral C++, I'd go with Eclipse, which I find rock solid).

    1. Re:I've come to hate VS by QuestorTapes · · Score: 1

      > Visual Studio, specifically VC++6, rocked in the days of writing Windows apps.
      > ...the editor itself was just awesome. It was solid, never crashed ...and was
      > fast fast fast.
      > ...Later versions, though, got seriously sluggish, and yes, ultimately it's
      > just a glorified text editor, so why are all these windows sliding in and out
      > at odd times, they rearranged all the project settings...Plus everything up to
      > VS2008 has just been slow for me...from constant annoyingly-slow to
      > wait-did-it-freeze-up-on-me-oh-no-it-just-came-back slow. Plus I've been
      > able to crash pretty easily all of them...It's just that painful.

      Hear, hear. Same pain on my end.

      Especially with SSIS; redrawing the pretty little boxes seems to suck up all the processing power, and bring any other MS tools, like instances of SQL Workbench, to a halt.

      Add to it the fact that, while the tools allow you to build project using msbuild and useful tools, the defaults are still exactly wrong. I work with a couple of teams at work who regularly have deployments to our production servers bomb, and they can't back out, because setting up the msbuild scripts and properly versioning the right files isn't the default.

      It requires you to override the tools and do it manually. The pointers and clickers don't know how to do that and don't want to learn. So where I have Rakefiles (I was using ms-build, hoping to get others to use a decent tool by choosing one from MS. After fighting for months, I said screw it and just started using rake), they have 40 page manual checklists and tons of committee meetings to prevent errors -- and they still fail as often as not, and they never know what changed.

      My Rakefiles track changes and version numbers, and I can back stuff out when needed (which isn't often).

      Good to hear that 2010 seems to be better; but around here, that means we'll probably start using it in about 2025...

  62. Re:Unless I forced to, I would never touch those k by Anonymous Coward · · Score: 0

    Sure, Cause all YOUR programs are so good that everyone will still care about them in five years...

    Real programmers do it in K&R C

  63. Mod parent UP! by KingSkippus · · Score: 3, Interesting

    Very insightful reply, and you're 100% correct. That was my other line of thought. This is the company (and probably some of these "superstar" programmers are the very people) who have given us a litany of buffer overruns, security holes, and other low-level programming "features" over the years.

    I'm not saying that no one should ever program at a low level, but I am saying that people shouldn't be afraid to take advantage of features of managed code and other conveniences. Don't program at a low level if you don't have to. You're only making your life harder for no reason, and needlessly exposing yourself to risks of fundamental errors that are much worse. Take advantage of all of the hard work that others have already done.

    1. Re:Mod parent UP! by TapeCutter · · Score: 4, Interesting

      A decade ago when I was employed at Big Blue it's then CEO Lou Gerstner said "All code has been written, it just needs to be managed". We all laughed so hard it hurt, however the way things are going Lou may get to have the last laugh after all.

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
  64. The real reason why they don't use Visual Studio by melted · · Score: 5, Insightful

    The real reason why they don't use Visual Studio is far more prosaic -- the build environment of most of Microsoft products does not support the Visual Studio project files. Their products are built using a system called CoreXT -- basically a set of binary tools and scripts cobbled together by build engineers and developers over the past decade or so. CoreXT uses a lot of different crap, make, perl, compilers, etc, etc., and all tools and SDKs are checked in and versioned. The upside is that you can roll back your Source Depot (Microsoft's own flavor of Perforce) enlistment to an earlier date and be sure things will build exactly the same way, and once you enlist, you get repeatable, isolated build environment where you can guarantee the correctness of versions for all tools, compilers and libraries (Java developer's wet dream, even though they don't know it). The downside is that you have to maintain the makefiles by hand, and you can't use Visual Studio, because there are no project files checked in, and even if there are, most people don't use them and they are not updated, so you can count on them being broken.

    I did a lot of my coding in either Notepad2, or in a separate project in Visual Studio against a test harness emulating the rest of the project (what Enterprise Java types call a "mock"). Some folks used Ultra Edit or vi, or EMACS. For some just a bare Notepad did the trick. Some stuck with Visual Studio, which in their case was just a glorified Notepad with autoindent since it doesn't support build or Intellisense if you don't have a project file.

    Yes, it's an enormous waste of time, and yes, it was painful. But CoreXT is so integrated into the rest of the dev pipeline that replacing it with something else in a large product is a major, destabilizing endeavor that is bound to undo at least some of the work around gated check-in infrastructure, test infrastructure, automated deployment infrastructure and god knows what else, so few teams ever attempt it. Now naturally, DevDiv eats their own dogfood, so they were one of the first teams to switch completely to MSBuild. It took something like a year in their case, they did it gradually, from the leaves down the tree. I'm sure if they had a choice, they would be using CoreXT to this day though, and fighting with incremental build issues. :-)

    Recently, a few more teams have adopted MSBuild. They can actually open their entire projects in Visual Studio and rebuild them. If they have test infrastructure deployed on the side, some of them can even test the product without waiting for it to deploy. So I predict that as more and more teams adopt MSBuild (this in itself could take another decade easily), these "senior" folks will come around to appreciate its benefits. It's awfully handy when you can set a conditional breakpoint on your local box and step through things.

  65. Re:Programmers I've worked with by onefriedrice · · Score: 2, Insightful

    Actually, you're both right. Or I should say, you are right and the OP may be right. You're right because it is obviously true that there exists at least some non-poser programmers who use Visual Studio and at least some "poser" programmers who use a text editor. But the OP may be right if it is statistically true (I don't know that it is) that there exists high correlations between "good" programmers preferring a text editor and/or "posers" preferring Visual Studio.

    While it is obviously true that such correlation coefficients do not equal 1.0 (since supposedly at least some of us subjectively know of some good programmers who prefer Visual Studio or some poser programmers who prefer a text editor, it is my opinion that there probably does exist a pretty strong correlation on the basis (and assumptions) that programmers who are familiar with a text editor are older and therefore more experienced than those whose only real experience is with an IDE. If this is true, then the OP is generally correct (and it is obvious that he was generalizing).

    --
    This author takes full ownership and responsibility for the unpopular opinions outlined above.
  66. Re:Programmers I've worked with by Anonymous Coward · · Score: 0

    The biggest posers I worked with used Visual Studio.

    The biggest posers nowadays use Google, but so does everyone else. I guess it's a matter of degree, and whether one crosses a fine legal line.

  67. C-x Meta-e Quasi-butterfly by Anonymous Coward · · Score: 0

    Are you sure you weren't in APL-mode already?

  68. Re:Unless I forced to, I would never touch those k by techno-vampire · · Score: 1
    There are times I am forced to, like if I'm doing gaming video, I have to do it using the Direct-X toolkit. I mean, there is no other way around, since some users are using ATI cards and CUDA is useless on ATI GPUs.

    And yet, the people doing graphics and gaming programming for Linux seem to do just fine without it. This isn't intended to knock Windows, please don't misunderstand me. It's just a statement of fact, and a question. Why is Direct-X so vital for such things on Windows and so irrelevant on Linux that it doesn't exist? The answer may be obvious to you, but I'm not a graphics or gaming programmer and I don't normally need to know these things. If you have a good explanation, I'd be interested in learning something new.

    --
    Good, inexpensive web hosting
  69. Re:Unless I forced to, I would never touch those k by digitalunity · · Score: 2, Interesting

    OpenGL doesn't encapsulate anything other than graphics. DirectX encapsulates input, 3D acceleration, sound, etc.

    From a developer standpoint, DirectX is a no-brainer when it's available.

    --
    You can't legislate goodness. Let each to his own destiny, by will of his freely made choices.
  70. Re:Programmers I've worked with by Abcd1234 · · Score: 5, Interesting

    But the OP may be right if it is statistically true (I don't know that it is) that there exists high correlations between "good" programmers preferring a text editor and/or "posers" preferring Visual Studio.

    I'll buy the former, but absolutely *not* the latter.

    Coding with a simple text editor, make/gcc/etc, and gdb implies a fundamental set of skills: familiarity and comfort on the command-line, ability to (presumably) write and invoke Makefiles, ability to use gdb (which, let's face it, ain't pretty for a newcomer), and so forth. So it stands to reason that there's a greater chance such an individual has the skills necessary to write decent code (also known as "trial by fire"), as a poorer developer would likely be scared away.

    But I find it very difficult to believe that, given a population of VS users, there's a disproportionate number of crappy developers (ie, that the ratio of skilled to unskilled developers exceeds the ratio in the software developer population at large). A weak developer will obviously use any tools that make the job of writing code less daunting, and a good IDE definitely fits in that category. And a strong developer will use whatever tool makes their job easier, and guess what? VS is a *damn* good tool, particularly if you're targeting the .NET stack.

    So I'd would say this: A developer that's happy using a simple text editor/compiler/debugger combo has a greater than average chance of being a good developer. But you can assume nothing about a developer who chooses an integrated IDE over the aforementioned environment if given the choice.

    In fact, I would go so far as to say that any developer who actively *shuns* IDEs without good reason (and, BTW, simple familiarity is a good reason... mindless elitism, however, is not) deserves as much skepticism as one who isn't capable of using the editor/compiler/debugger environment, as they're expressing dogmatic tendencies that can be deeply counterproductive in the work environment.

  71. Re:Unless I forced to, I would never touch those k by techno-vampire · · Score: 2, Interesting
    From a developer standpoint, DirectX is a no-brainer when it's available.

    Thank you, but that's not what I was asking,although the comparison is both interesting and informative. (to me, at least) What I wanted to know is why Linux devs don't feel the need for a Linux version of Direct-X. However, it occurs to me that you have answered my question, indirectly: OpenGL may not do everything Direct-X does, but it does enough so that Linux devs don't feel the need for a more comprehensive solution. Thank you again.

    --
    Good, inexpensive web hosting
  72. Oh please... by bertok · · Score: 4, Insightful

    I can't stand it when Microsoft developers talk about multi-threaded programming when the entire corporation has done that absolute bare minimum to make developer's lives easier. No wonder that they don't like using their own tools, because their tools are terrible.

    Many years ago, a brilliant third-party multi-threaded library was released for Java, by a professor at Oswego university. I used it in several large production apps, and it absolutely rocked. You could build up safe, reliable, scalable multi-threaded applications by simply snapping together flexible pieces like Lego. It was so good that it became a part of the SUN Java standard library, and it's now called "util.concurrent". Compared to having to "hand craft" multi-threaded code in C++, it was wonderful. It's as if the lights had just turned on, and everything had become clear to me.

    Now that I'm a C# dev, it's been a huge step backwards, doubly so because .NET was developed after the Oswego library was already popular, so Microsoft must have seen it and just flat out ignored it. For years afterwards, the whole entirety of multi-threading in both .NET and C++ were "threads" and "locks". The one nicety they included was an anemic thread pool in .NET which was just usable enough for the most basic tasks, but couldn't handle any real load. Even the locks were heavyweight inter-process kernel locks that are unusably slow for many tasks.

    It's only now in .NET 4 (which won't be final until 2010) that they are adding a small set of very basic lock-free containers, light-weight locks, and actual interfaces that one can implement in order to customize behavior. It's all still very basic, and nowhere near as flexible, powerful, or comprehensive as the Java APIs that are years old now.

    Microsoft's general attitude to API design is so bad that it can only be described as wilful ignorance. Reading articles evangelizing "modern multithreaded programming to better utilize new multi core processors" somehow feels like a religious zealot harping on about their appreciation of pure rational logic and science.

    1. Re:Oh please... by argent · · Score: 1

      Microsoft's general attitude to API design is so bad that it can only be described as wilful ignorance.

      That's always been the case. They honestly don't believe that it matters whether an API is well designed, let alone beautiful. What's worse, they've managed to infect better designed systems with their half-baked APIs through imitation and even deliberate reimplementation.

    2. Re:Oh please... by Anonymous Coward · · Score: 0

      Wow! Java's had this great library (and I'm sure many others) all this time and _still_ manages to suck? LOL

    3. Re:Oh please... by Anonymous Coward · · Score: 0

      "Oswego University"? It's SUNY Oswego. (State University of New York at Oswego.) The guy you mention is Doug Lea, who also wrote one of the world's most popular malloc()s, which among other places is used in glibc. Nice guy, too.

    4. Re:Oh please... by mahadiga · · Score: 1

      For years afterwards, the whole entirety of multi-threading in both .NET and C++ were "threads" and "locks".

      +1

      --
      I'd like to buy homeland for our 10 million people. http://twitter.com/mahadiga
  73. Perhaps they should by Anonymous Coward · · Score: 0

    Perhaps they should start using the modern tools. Then windows might not be such a piece of shit.

  74. Re:Unless I forced to, I would never touch those k by Anonymous Coward · · Score: 2, Interesting

    Linux video in general is a mess...

    But open source developers have put a ton of effort into cloning DirectX in Wine, which is arguably a better solution given Linux's current marketshare.

  75. Re:Unless I forced to, I would never touch those k by khellendros1984 · · Score: 3, Informative

    I've used SDL, which provides for audio, 2d graphics, controller input, network communication (I think), among other things. Basically, it's a multi-platform toolkit similar in use to DirectX....of course, I'm not claiming that it's a full feature-matched equivalent, but it's pretty useful.

    --
    It is pitch black. You are likely to be eaten by a grue.
  76. Re:Unless I forced to, I would never touch those k by Nikker · · Score: 1

    So your saying the only reason you don't code in asm is that another archetecture might be popular in 5 years? That's a joke you program in what ever the guy who signs your checks says is good like everyone else. If you call your own shots and assembly is still no good you haven't been at it long enough to make any good libraries. Either way don't start telling us it's no good cause something better might show up in 5 years. Your going to have to recode it by then any ways cause it's gonna be worth it when you do.

    --
    A loop, by its nature, continues. If that didn't make sense, start reading this sentence again.
  77. Re:Unless I forced to, I would never touch those k by johny42 · · Score: 1

    If you call your own shots and assembly is still no good you haven't been at it long enough to make any good libraries.

    I've made some very good libraries that help me code assembly. I like to call them higher-level programming languages.

  78. Eh? by Anonymous Coward · · Score: 0

    These guys are senior enough that they don't seem to need to watch what they say and how it aligns with Microsoft's product roadmap.
    So he thinks the discussion content was not decided beforehand? So naive.

  79. Re:The real reason why they don't use Visual Studi by ahabswhale · · Score: 1

    I'm a Java developer. Please explain to me the wet dream I'm missing out on.

    --
    Are agnostics skeptical of unicorns too?
  80. Re:Programmers I've worked with by FreakyGreenLeaky · · Score: 1

    maximized xterm

    Please don't do that. I will hunt you down and deliver a round-house open-handed slap to your ear; rupturing your eardrum asunder. Consider that next year I might have to maintain your 512 column code. There is nothing more nauseating than opening someone's code in a standard xterm and seeing single lines fucking wrap around the fuck around the fucking terminal.

    Just as a function should ideally be as small as possible (not always possible, I know) without too much scrolling, you really should try and use 80 columns only. As with most poetry which employs constraints such as stanzas, etc, you can also achieve beauty (and better code) in 80 cols. And you won't piss off other devs who have to look at your code.

  81. Doug Lea? by OrangeTide · · Score: 1

    Damn. I don't even use Java(I'm an embedded C guy), but if DL did it, then it's probably really good. As a C developer I feel the old pthreads style is a throwback to old multi-process hacks on SysV of 25 years ago.

    What dragged you to the dark side anyways? (C#/.NET)

    --
    “Common sense is not so common.” — Voltaire
    1. Re:Doug Lea? by bertok · · Score: 3, Interesting

      Damn. I don't even use Java(I'm an embedded C guy), but if DL did it, then it's probably really good. As a C developer I feel the old pthreads style is a throwback to old multi-process hacks on SysV of 25 years ago.

      What dragged you to the dark side anyways? (C#/.NET)

      The Oswego library was the bomb. It's basically how APIs should be designed: Very simple looking abstract interfaces* with a bunch of reference implementations, some of which are incredibly advanced. You can then pick and choose what you want, reimplement anything at will, and combine like Lego. That guy saved me a LOT of time and bug hunting. Want a queue? Pick from four different flavors! Want priorities? Done! Want to keep the queue but change the execution style or locking mechanism? No problem!

      As to switching, I've always generally been a Windows guy, and C# is currently the single fastest way to develop a GUI and not get "stuck" too much, because it can call C or COM style APIs directly. When it was first released, a good former Java/C++ developer could get started with it quickly, and develop GUIs 2-3x quicker than anything else, which then ran smoothly, and looked native.

      I still get frustrated, especially with the lack of decent containers, algorithms, and threading frameworks, but C# is still overall the best. I do a lot of very Windows platform specific stuff like Active Directory manipulation, and it would be very hard to do that quickly (but correctly) with any other language.

      Java is great for "server side" development. It has better database binding** libraries, threading, third-party support, containers and frameworks, and a much better community. However, its client-side is just terrible, especially the GUI frameworks. SUN apparently still hasn't learned the key to Microsoft's success story: own the client, and you will own the world.

      It's only recently that Java IDEs got decent "drag & drop" forms development, while Microsoft is already a generation ahead with WPF which very cleanly separates code and layout, to the point that artists can do layout almost completely independently of the dev team. Think of what HTML and CSS tried but failed to do, but done properly.

      *) Microsoft has an allergy to interfaces. It's like they're trying to tell you that they "own" the API, and you, the developer, should keep your dirty little mitts off it.

      **) Microsoft's LINQ to SQL is practically a beta at this time. They don't even support multi-columns keys! Its big brother, the "Entity Framework" didn't support foreign keys until .NET 4, which is currently beta, and the GUI editor still fails on all but the simplest models. Something like 60% of the features, if used, disable the GUI editor completely. Microsoft isn't even planning to finish the EF framework GUI, ever. Every couple of years, they come up with a new data binding framework, drop the old ones, never finish it, and then they repeat, not having learned a single lesson. I've lost count.. there's been, what: DDE, ODBC, ADO, ADO.NET, LINQ, EF, and now they're up to some garbage called "M" or "Oslo" or whatever. I'm certain it'll be buggy, slow, incomplete, and replaced in short order. Just watch.

    2. Re:Doug Lea? by hibiki_r · · Score: 1

      Java has had pretty good forms development for quite a few years, but it was third party, and then it required some custom work to make it easy to truly separate M,V and C. I've been running them in a production environment for 5 years, on top of my own infrastructure that makes the controller code look more like a web framework than what most people end up doing with Swing. Add a layer of Groovy on top and 20 lines of code and a generic library do the work that 400 lines of Swing used to do.

  82. Re:Programmers I've worked with by turing_m · · Score: 1

    OTOH, people who judge others based on their choice of IDE? Those people *are* tools...

    Obviously someone who uses Visual Studio isn't necessarily an idiot. But maybe the parent has noticed a correlation (not causation) that extends beyond the anecdote. Someone who uses vim or (and I'll be charitable - it is a powerful editor) emacs almost by definition has to be intelligent enough to see that putting up with the learning curve in the short term is an investment that pays for itself many times over in time saved. And when you use an editor that can edit at the pace of your thinking, you find that you can concentrate better - your train of thought doesn't derail - which will give additional speed and ability. And maybe, a vim/emacs user also needs the intelligence to learn at a fast enough rate that the learning curve does not seem onerous.

    You're also going to need some intelligence to even think that a decision on a text editor is something you should research. Someone smart could do a "site:slashdot.org text editor" search on google, find a poll and probably choose vim or emacs or something similar on that basis. If they are that smart, they are probably going to do that for other aspects of coding and it is going to show up in their coding ability. Someone stupid is going to stick with the default, or prioritize immediate ease of use over long term time saved.

    In short: dumb users get filtered by the learning curve, smart users have incentive to learn the editor. Because of that the average vim/emacs user is going to be smarter than average, and also a better programmer. However, if someone uses another editor I am not going to make an assumption about their intelligence.

    --
    If I have seen further it is by stealing the Intellectual Property of giants.
  83. Re:Programmers I've worked with by Anonymous Coward · · Score: 0

    I've encountered quite a few crappy programmers who couldn't really use an IDE but could use emacs and makefiles because they had been taught exactly how to copy-paste-modify a makefile. No deep understanding is required for that if you just parrot.

  84. Re:The real reason why they don't use Visual Studi by Ash-Fox · · Score: 1

    I'm a Java developer. Please explain to me the wet dream I'm missing out on.

    Off the top of my head, your applications will run on OS X without having to add Aqua specific extensions, people won't ignore your application just because it's "java" and you won't get a plethora of users moaning that it's "slow".

    --
    Change is certain; progress is not obligatory.
  85. Shocked by 1s44c · · Score: 1

    Microsoft's Top Devs Don't Seem To Like Own Tools

    No, really? I'm shocked.

    It does make me think that these tools were not written by these people though but by some team headed by a PHB.

  86. Ther is an alternative by mangu · · Score: 1

    You don't earn money programming with your choice of a programming language, you earn money with a programming language that your employers choose for the jobs that are available in your area

    You could try writing code so awesome the managers would have no alternative than let you choose your tools. I did this recently, there was a customer management system that needed some data from engineering. I wrote a "stop gap" thingy in Python in two months, with the understanding that this would be replaced by a "proper" system in .NET as soon as possible.

    When budget time came in, the bill for converting my small Python script to VB.NET was $200k. Now it's official: Python has been accepted by the upper management as a valid cost-cutting tool to replace .NET wherever possible.

  87. I can't beleive....... I agree with MS programmers by jabjoe · · Score: 1, Informative

    I can't stand the .NET invasion. I keep being told by .NET people it's really not that heavy and it much more productive etc etc. Most admit it would be a problem if every app was written in .NET, but it ok for their app. BUT the very same people blame .NET when their applications are fat and slow! It gets worse when you have multiple of these apps running, each written basically on the assumption it's the only thing to run. Apps should be written to be a good citizen, i.e. take as little as they can, and give as much as they can. Don't get me wrong, it's not just .NET, this seamed to happen before with JAVA, which didn't take over either. Now I don't know if it's an environment thing, or programmer skill level thing, but JAVA applications don't seam to be as bad as .NET.

    Then worse of all, things written badly as web apps. I was in the doctors and they had been computerize. The register for your appointment system was really slow, but what blew me away was the slide show of information. It couldn't even scroll large text across the screen properly. I could see this was a web thing because some of it was broken and the page was a IE page not found page. Here we are in 2009 with crazy powerful computers from the future, and we have such bad choices of technology, so much abstraction in the way, and bad "professionals", that it's worse then I did as a kid in BASIC on a computer with 2MHz. It makes me soo angry. It feels like we are going backwards. The fact these crap systems always seam to be running on Windows doesn't help. I'm sure it would be as easy and faster+ cheaper on a stripped down Linux with just X, the required libs and python!

  88. interpretative dance by AlgorithMan · · Score: 1

    developers will soon have to use Natal to "write programs through interpretative dance.

    that's a funny image, but after I've seen programming languages like brainfuck, whitespace, shakespeare or piet, I'm pretty sure that some day there really will be a programming language like that...

    --
    The MAFIAA is a bunch of mindless jerks who will be the first up against the wall when the revolution comes
    1. Re:interpretative dance by AlgorithMan · · Score: 1
      maybe i'll give you a some details
      • brainfuck: an extremely limited assembler that only has 8 instructions or so
      • whitespace: like programming in 1's and 0's, just that it's spaces and tabstops instead
      • shakespeare: your program is a theatrical play, the variables are the actors, to declare them, you say they "enter the stage" etc
      • piet: your programs are images (it's like a 2D turing machine) and having "pretty" sourcecodes is the main goal - there is a program that writes "Piet" and looks like a painting by Piet Mondrian...

      so if SUCH programming languages exist, I don't think interpretative dance programming languages won't be made...

      --
      The MAFIAA is a bunch of mindless jerks who will be the first up against the wall when the revolution comes
  89. Great tools, rough practices... by tjstork · · Score: 3, Insightful

    If only Microsoft's architecture and best practices groups actually worked to leverage the efficiency of the tools, rather than just drain it. The thing about Microsoft is that the tools are good, yes, but then they sell them with these practices and recommendations that just drain innovation and drags all developers down to a lowest common denominator.

    It's really, Taylor all over again but applied to computer programming. The problem is, Taylor is what GM and Ford and Chrysler do, and the unions are locked in with. Just like we have pipefitters and machinist titles of varying kind on the shop floor at an old style manufacturing plant, we have guys that are being pushed into the database, u/i design, or middle tier roles, and really, 90% of all projects could be done with one guy putting together a half way decent screen in a craftsmen like fashion.

    At this point, Microsoft is headed out just like GM - recruiting a lot of the best engineers, then just killing them in red tape, and delivering products that increasingly fail to captivate their market.

    --
    This is my sig.
  90. Re:The real reason why they don't use Visual Studi by dkf · · Score: 1

    Off the top of my head, your applications will run on OS X without having to add Aqua specific extensions, people won't ignore your application just because it's "java" and you won't get a plethora of users moaning that it's "slow".

    The main issue for OSX GUI apps vs. GUI apps on other platforms is that apps tend to be laid out differently on OSX. So while you can reuse your layouts from other platforms, they look out of place. (By contrast, Windows and Linux tend to use much more similar GUI layout strategies; their GUI heritages diverged much more recently.)

    --
    "Little does he know, but there is no 'I' in 'Idiot'!"
  91. Eclipse is actually better. by tjstork · · Score: 1

    WTF?

    VisualStudio supports plain old C++

    Visual Studio 2008, the current shipping version, is not nearly as effective with intellisense as Eclipse is. In particular, Eclipse actually feels faster when it comes to editing, does a good job with sifting through templates, and has the nice added bonus that integrating assembly is easy.

    I mean, come on, integrating MASM for 64 bit assembly does NOT WORK OUT OF THE BOX with Visual Studio 2008. How can you call VisualStudio a serious tool for low level work when they didn't even test it with assembly. That's just crazy.

    --
    This is my sig.
    1. Re:Eclipse is actually better. by Cyberax · · Score: 1

      I never use the default build system of MSVS, so I don't know what's the problem with MASM. I prefer CMake for cross-platform systems and build system of DDK for kernel-mode drivers.

      As for IntelliSense, new Eclipse CDT is about on-par with MSVS 2008.

      However, MSVS 2010 leaves it far behind, and you can download MSVS 2010 Beta right now (it's been available via MSDN subscription for a while now).

      Also, MSVS 2010 supports some nice C++0A features.

    2. Re:Eclipse is actually better. by tjstork · · Score: 1

      However, MSVS 2010 leaves it far behind, and you can download MSVS 2010 Beta right now (it's been available via MSDN subscription for a while now).

      I can download the beta, but its not a shipping product. So, comparing a beta to a shipping product seems like apples and oranges to me.

      Also, MSVS 2010 supports some nice C++0A features.

      That's cool and honestly very welcome. But keep in mind that the current shipping version of GNU GCC supports a great many C++0 features as well.

      http://gcc.gnu.org/projects/cxx0x.html

      --
      This is my sig.
  92. Summarization. by tjstork · · Score: 1

    If you know how to build a program from the command line, it means you understand how the build process works. Ultimately, Visual studio works just like any other IDE. It manages some sort of a build engine visually and provides support designed to shorten the build and test cycle. If it helps you, use it. If it doesn't, don't.

    --
    This is my sig.
  93. Re:Programmers I've worked with by tjstork · · Score: 3, Funny

    Please don't do that. I will hunt you down and deliver a round-house open-handed slap to your ear; rupturing your eardrum asunder. Consider that next year I might have to maintain your 512 column code. There is nothing more nauseating than opening someone's code in a standard xterm and seeing single lines fucking wrap around the fuck around the fucking terminal

    Wouldn't it be easier to turn off line wrap in your editor?

    --
    This is my sig.
  94. Re:The real reason why they don't use Visual Studi by Ash-Fox · · Score: 1

    The main issue for OSX GUI apps vs. GUI apps on other platforms is that apps tend to be laid out differently on OSX. So while you can reuse your layouts from other platforms, they look out of place.

    The main issue I found, was that the display stuff is broken. Just check out my slashdot link, http://scorch.quickfox.org/ - On older versions of OS X, it flickers to hell (hence the epilepsy warning), on newer versions of OS X the scroll bars are missing, on some versions of OS X server it will cause the system to kernel panic (all 100% reproducible). The only solution I am aware of, to get around it, is to add platform specific code, which I have absolutely no interest in doing.

    The application in question even works on kaffe, msjava and plenty of other java runtimes.

    --
    Change is certain; progress is not obligatory.
  95. Re:Programmers I've worked with by FreakyGreenLeaky · · Score: 1

    Then long lines disappear at the end of the term. I'm not sure what's worse.

    Disappearing text (forcing you to scroll right), or long lines wrapping, breaking the flow of the code.

  96. Re:Programmers I've worked with by gbjbaanb · · Score: 2, Informative

    you really should try and use 80 columns only

    Hi. The Time travel tourist board called, they said your "work in the future" visa was about to expire and could you make your way back to 1978 please. :)

  97. Re:Unless I forced to, I would never touch those k by Hal_Porter · · Score: 1

    You don't need to port assembler. Consider. You write some application which is a bit close to the limit in terms of real time performance - e.g. a video codec. Everything is in C or C++ initially and you concentrate on getting the high level algorithms right. It works fine on a Core2 laptop.

    Then you test it on a netbook. It stutters a bit or maxes out the CPU. So you profile it and write assembler versions of the critical parts. I.e. your code looks like this

    #ifdef _X86
    switch ( cpu_class )
    case INORDER:
        asm_inorder_inner_loop(); // in asm, designed for an in order CPU like an Atom
    case OUTOFORDER:
        c_inner_loop(); // faster than asm version on a real OOe CPU
    #else
    c_inner_loop(); // on x64 and others only the C version is used
    #endif

    Now on low end netbooks (i.e. x86) the code runs smoothly. On high end laptops (x64) the processor is fast enough for the C code to work anyway. Later processors probably won't be that much faster, but they are unlikely to get slower. Actually netbooks are the one case where slower processors have suddenly become more common.

    Now if at some later date ARM netbooks become common (I seriously doubt this) you'd be best off profiling once again and doing an ARM version of the hot spots in the code. The point is that you make sure your code will run without the inline assembler and bet on future processors being faster. Actually x86 changes quite drastically to the point where at some point the C compiler may well do a better job on compiling the C code than you did on the assembler anyway. From what I've read optimizing for Atom is pretty different from optimizing for Core2. And C compilers get smarter every year.

    Of course for most non real time applications you're better off making sure you have an efficient C/C++ application. I've never written any PC code that needed this sort of treatment. Embedded systems sometimes do, but you can do the same there - write the whole lot in C and if you can't make it fast enough profile and hand optimize the bits that need it.

    --
    echo -e 'global _start\n _start:\n mov eax, 2\n int 80h\n jmp _start' > a.asm; nasm a.asm -f elf; ld a.o -o a;
  98. Re:Unless I forced to, I would never touch those k by makomk · · Score: 1

    Except that, as far as I know, DirectX doesn't do anything to unify all of these. There's a DirectX 3D graphics API, an input API, a sound API, etc - but they're all independent of each other. There's nothing to stop you using DirectX for input in an OpenGL app - or, indeed, using the DirectX sound API in a media player that doesn't make use of any of the other bits of DirectX.

  99. Comparing static to dynamic by tepples · · Score: 1
    So you managed to make hello world small on Ubuntu by linking against a shared GNU libstdc++. But Windows doesn't come with GNU libstdc++, so to make it a valid comparison, you have to either
    • A. link your program statically as MinGW is doing,
    • B. include the 962,800 bytes of Ubuntu Jaunty's libstdc++.so.6.0.13 in the byte count, or
    • C. figure out how to get MinGW to use the same implementation of the C++ standard library that Visual C++ Express uses.
  100. Re:I have a way to resolve your paradox by Johnny+Loves+Linux · · Score: 1

    I think without realizing it, you've made a fundamental assumption that is not true: # of good developers == # of bad developers. If that assumption were true, then by your logic we should expect that about a 50-50% breakdown of good/bad developers who use VS.

    But, if instead, the # bad developers is much, much larger than the # of good developers we should expect that for an IDE that has a low barrier of entry that bad developers would naturally gravitate to that particular IDE, wheras good developers don't necessarily have a bias (as for example, you don't have a bias). In which case the IDE usage heavily favors the bad developers (they were the vast majority of the population already, and now they are even even more concentratrated since there are proportionally fewer good developers who use only that IDE.

    As you pointed out, the IDEs that have "higher" barrier to entry (aka, vi, emacs, etc.) are naturally not going to present a problem to the good developers, but the bad developers will shy away from them. So, of course we should expect then that the percentage of good developers who use vi vs. bad developers who use vi will be (much) higher than the percentage of good developers vs. bad developers in the general population.

    In other words, if Pr(Code Monkey is bad) = p, Pr(Code Monkey is good) = q (with p much larger than q), then Pr(Code Monkey is bad | Code Monkey uses VS) > p and Pr(Code Monkey is good | Code Monkey uses vi) >> q.

    Intuitively, this explains why people are more likely to be impressed by someone who uses vi, emacs, etc. than someone who uses VS. It's not that VS stinks or that continual use of it melts your brains, it's just that as an indicator of your skillset, someone who uses vi,emacs, etc. is *probably* at the least competent and most likely *good*. Whereas, usage of VS indicates very little about your skillset other than the majority of VS users are "bad" which would suggest such a person *probably* is also a bad coder.

    To get rid of the stench of incompetence associated with use of VS I would suggest that Microsoft come out with another IDE that is "dumbed down" from VS, sort of a "VS, junior" for those who remember the IBM PC, junior. Something that has an even lower barrier to entry than VS, so the bad Code Monkeys can gravitate to "VS, junior" and thus boosting the probabilities for the competent VS developers. Maybe they could throw in a Clippy on VS, junior or a dog with mental bubbles of suggestions.

  101. Re:Programmers I've worked with by maestroX · · Score: 1

    So I'd would say this: A developer that's happy using a simple text editor/compiler/debugger combo has a greater than average chance of being a good developer. But you can assume nothing about a developer who chooses an integrated IDE over the aforementioned environment if given the choice.

    You can assume one thing about a developer who's using a simple text editor/compiler/debugger combo targetting .NET; (s)he's using MONO/Linux.

  102. Re:Programmers I've worked with by FreakyGreenLeaky · · Score: 1

    GET THE FUCK OFF MY LAWN!

  103. Re:The real reason why they don't use Visual Studi by Anonymous Coward · · Score: 0

    If you want to take a look at DevDiv Dogfood statistics you can find it here.

    http://blogs.msdn.com/bharry/archive/2009/07/13/july-09-devdiv-dogfood-statistics.aspx

    They have recently hit the 1.000.000 check-in
    http://blogs.msdn.com/bharry/archive/2009/07/17/a-dogfooding-milestone.aspx

    The DevDiv Dogfood statistics shows the MS internal usage of Microsoft Visual Studio Team Foundation Server which is a replacement for CoreXT

  104. Re:Programmers I've worked with by Abcd1234 · · Score: 1

    Please don't do that. I will hunt you down and deliver a round-house open-handed slap to your ear; rupturing your eardrum asunder. Consider that next year I might have to maintain your 512 column code.

    You've never heard of vertical window splits, I take it...

  105. Re:Unless I forced to, I would never touch those k by marcansoft · · Score: 3, Insightful

    Yeah, its fast.

    Not really. Compilers these days do a better job at optimizing most code than most assembly programmers (for well-supported CPUs anyway), mostly because instruction timing and dependency issues in modern complex CPUs are quite complicated, and compilers are able to take a lot more into account (just because the code 'looks' tighter doesn't mean it'll run faster). The only place where it really makes sense to use asm is for tight inner algorithm loops, especially when you can use SIMD instructions.

  106. Windows-only by rodrigovr · · Score: 1
    There are many things here.
    • DirectX is a MS product, with trademarks, patents and all.
    • Its interface is public but its implementation is not. So you must reverse engineer to get the same result.
    • DirectX apps are using Win32 and WinNT API, and many others Microsoft APIs. There's no reason to have DX without a complete Windows layer and it's why we have DX on Wine
    • the list goes on...
  107. Re:I can't beleive....... I agree with MS programm by Animats · · Score: 2, Informative

    I keep being told by .NET people it's really not that heavy and it much more productive etc etc.

    I feel the same way about Python. CPython is a naive interpreter, one of the few used for serious programming. Even Javascript has JIT compilers now. Not only that, on a multicore CPU, each CPython process runs slower, due to badly designed fighting over the global interpreter lock.

    If CPython didn't suck so bad at performance, Google wouldn't have had to write "Go". Sad.

  108. Context is all by ClosedSource · · Score: 1

    A lot of this depends on the environment you work in. In some companies you'd get fired if you took the time to do a real design, even if it saves time and money in the long run.

    Of course in start-ups you sometimes don't have a long run if you can't get the product out before the money runs out.

    Another factor is how fast and furious new technologies appear. For example, who has enough experience in Android to mentor less experienced developers?

  109. Re:Programmers I've worked with by Anonymous Coward · · Score: 0

    I don't think the developers are saying MS IDE sucks or that visual studio sucks. There are two main arguments being made:

    1. UML models (Graphical model based design) is useless
    2. Managed code lowers barriers to entry (No free lunch)

  110. Quote's out of context by A+Guy+From+Ottawa · · Score: 2, Informative

    I was at the talk, and yes Don Box said "I will fight you if you try to take away my text editor" but it was after having being asked a leading question by Eric Meijer. Something along the lines of "will we ever write software entirely without writting text?"

    However, what was Don doing for the rest of the PDC? He was hawking Entity Framework and M, both of which allow users to model data access using rich graphical tools!

    The talk is here: http://microsoftpdc.com/Sessions/FT52.

    --

    using System.Awesome;

  111. Re:Programmers I've worked with by OrangeTide · · Score: 1

    Eclipse? That's for poseurs.

    But seriously, you're going to make up crazy stereotypes to support your own irrational beliefs about VS? Personally I have no use for VS, but I'm not going to create a fantasy around Microsoft tools to justify my own Vi-using habits.

    --
    “Common sense is not so common.” — Voltaire
  112. woot Emacs! by OrangeTide · · Score: 1

    Same here. I had the work done in a matter of minutes in Emacs, but I couldn't figure out how to exit Emacs to run the program. :(

    --
    “Common sense is not so common.” — Voltaire
  113. The big problem is "builds". by Animats · · Score: 2, Interesting

    Ask yourself why we have "builds", where everything gets rebuilt. Do I have to have my ICs re-fabbed when I change the PC board design? No. We're still not doing components right.

    Historically, the big problem came from C include files. Everything but the kitchen sink is in there. There's no language-enforced separation between interface (the parts clients of the module see and may have to recompile if changed) and implementation (the part the implementations see). Also, you can include files inside include files, even conditionally. So developing the dependency graph of the program is hard.

    C++ made things worse, not better. The private methods of a C++ class have to appear in the header file, which exposes more of the internals than is really necessary. Every time you add a new private method, the clients, who can never see or use that private method, have to be recompiled. This not only produces cascading builds, it discourages programmers from adding new private methods rather than bloating existing ones. That's bad for code readability and reliability.

    Ada explicitly dealt with this. Ada has a hard separation between interface and implementation. This was considered a headache when Ada came out, but now that everyone has bigger monitors, it's less of an issue.

    Java, despite having interfaces, seems to have build and packaging systems of grossly excessive complexity. I'm not really sure why.

    The next problem is the "make" mindset, which is built on timestamps. "make" doesn't check what changed; it checks was was "touched". If "make" decided what had changed based on hashes, rather than timestamps, many unnecessary recompiles would be avoided. Something could run "autoconf", produce exactly the same result as last time, and not trigger vast numbers of recompiles.

    There's also the tendency to treat "make" as a macro language rather than a dependency graph. This results in makefiles that always recompile, rather than only recompile what's needed.

    It would be useful if compilers output, in the object file, a list of every file they read during the compile, with a crypto grade hash (MD5, etc.) of each. A hash of the compile options and the compiler version would also be included. Then you could tell, reliably, if you really needed to rebuild something.

    1. Re:The big problem is "builds". by cheesybagel · · Score: 1

      The next problem is the "make" mindset, which is built on timestamps. "make" doesn't check what changed; it checks was was "touched". If "make" decided what had changed based on hashes, rather than timestamps, many unnecessary recompiles would be avoided. Something could run "autoconf", produce exactly the same result as last time, and not trigger vast numbers of recompiles. .

      Check out ccache. Basically you symlink 'gcc' to it. Before running GCC on a source file, it actually computes the hash of the source file and sees if it was compiled already. If it was it just fetches it from the cache. Why this facility isn't included as standard on every system is a mystery to me.

    2. Re:The big problem is "builds". by Animats · · Score: 1

      Why this facility isn't included as standard on every system is a mystery to me.

      Probably because it makes builds 10% slower when the content isn't in cache.

      For many purposes, especially archiving, it would be useful if file systems maintained a hash of each file, at least for "unit files", those written sequentially and never changed without a full rewrite. There was a discussion about a month ago about file systems which merged duplicate files that way. If you could just ask the file system for the hash, instead of reading the whole file to get it, file-has-changed checks would go really fast.

    3. Re:The big problem is "builds". by fred+fleenblat · · Score: 1

      If you exit from your text editor with the proper command (ZZ for vi users) the file's timestamp won't be changed. Even if it did change, it shouldn't take that long to recompile one or two that you touched but didn't change. If you make a habit of stomping on timestamps all day long, the problem is not with make or gcc.

      Personally, I've had more grief the other direction--a file that needed to be recompiled but wasn't. When this happens in the middle of a session of bug hunting, it's easy to chase a bug for 20 minutes that you've already fixed. Very annoying.

  114. Did anyone actually read the article? by Anonymous Coward · · Score: 0

    Did anyone actually read the article? The microsoft developers quoted were not talking about IDE's vs text editors, they were stating that graphical programming environments (writing programs by making line & box diagrams, etc) would not overtake programming languages based on text. The responses take this so far out of context it has become comical.

    1. Re:Did anyone actually read the article? by Anonymous Coward · · Score: 0

      Ha! only relevant comment was made by an AC!

  115. There's nothing wrong with versioning your tools by Anonymous Coward · · Score: 0

    I'm a game developer. We do exactly the same thing when it comes to versioning the tools (although we do use Visual Studio solutions to drive our builds, even the automated ones; but we also use an in-house tool to take the projects and solutions for one platform and generate modified versions of them for each target platform, because that's easier than trying to make Microsoft's idea of targets and platforms fit properly into our build story).

    Ironically, the ONLY build tools we don't check into source control as part of our versioned build environment, is Visual Studio and the MS C++ compiler it comes with. But for the console platforms, all of the compilers, libraries, SDKs etc. that we use are all versioned in our source control system. There are several reasons to do this. A big one is making it easy to bring up a complete and correct build environment on a new machine, regardless of what tools you need installed to make it work (Perl, Python, some specific flavor of Make tool, some custom stamper.. whatever). Relative paths are used for everything. When a new guy joins the project, all we need to do is get him some accounts for source control etc., pull everything out of source control, and run a "build everything" batch file. Any tools that were not already compiled in source control, are compiled for him during that build, and then he's ready to go. Another useful effect of checking in all of the tools is that 5 or 10 years from now, if we decide to revisit this codebase (perhaps to re-release the game for a new platform or something), we will still have all of the needed binaries to build it, collected and archived in one place.

    Another reason is that, as the project progresses, we may upgrade compilers or build tools to new versions. The new tool may be incompatible with old code, or vice versa. (For example, this sometimes happens with 3D code when we upgrade to a new Xbox360 or DirectX SDK). By putting it all in source control, you can go back in time (say, to a particular milestone or demo branch) and get not only the source code, but the *same tools you were using back then* which are known to be compatible with it. That is a major convenience.

    After working like this on several projects, I would never go back to the bad old way! I don't care what installer crap an application comes with, if we can't figure out how to put the whole thing in our source control system then I would not dare to use it.

  116. Re:The real reason why they don't use Visual Studi by ahabswhale · · Score: 1

    I have no idea what you're talking about or how it relates to my question. I was asking a question of a guy who works on Microsoft products, so I'm having difficulty figuring out why you're talking about OSX. Yes, I realize that Microsoft makes Mac software as well but that's not what the discussion is about. Once again, I ask what wet dream I'm missing out on as a Java developer that all these developers at Microsoft seem to have?

    --
    Are agnostics skeptical of unicorns too?
  117. Microsoft's Top Developers? by CountBrass · · Score: 1

    So these are the guys responsible for Windows (all versions), Internet Explorer, Excel right? So why should we take any notice of these guys? Unless of course we wanted to learn how to develop slow, buggy, insecure applications that suffer from chronic feature bloat.

    --
    Bad analogies are like waxing a monkey with a rainbow.
  118. Re:Programmers I've worked with by FreakyGreenLeaky · · Score: 1

    For vim, yes. However, vsplit is not available for some versions (ie, whatever comes with your distro). ...and no, installing the latest from src is not an option.

  119. Re:I can't beleive....... I agree with MS programm by jabjoe · · Score: 1

    Ah but you see why I prefer Python over .Net/Java is it doesn't try and be fast (bar a few crazy projects). You write/use a collection of fast part written in C, joining it together into a application with python. Reminds me of a little the way so many RiscOS apps where a blend of BBC BASIC and ARM code. You write the parts that need to be fast in a fast language, and the rest in a expressive language.

  120. Crikies. by RightSaidFred99 · · Score: 2, Insightful

    People are reading a lot into this that isn't there. These people use Visual Studio, and I don't think they'd claim that using a GUI to design a...GUI is a bad thing. They're referring largely to the new modeling tools MS is pushing with VS2010, and they're saying sometimes it's quicker to just write the code than design the model. And indeed it is.

    It's a tradeoff. For example, they already have some modeling tools (web service factory) for developing a web service. You layout interfaces, data contracts, message contracts, etc... and associate them visually. I think this sucks, personally, and I still just do it the old school (and much quicker, more powerful) method by creating an interface and data contracts. But for some scenarios designing the model might pay off in terms of self-documentation and allowing some standards to be followed by multiple developers working on a web service.

  121. Re:The real reason why they don't use Visual Studi by melted · · Score: 1

    You're missing out on guaranteed versions of binaries in your build, side by side deployment of different versions if your dependencies need them.

    I was shocked when I found out that in Java world if library A requires version x of library B, and library C, which in turn requires version y of library B, a Java developer will pick some version of library B at random and pray it works with both A and C.

    For most folks, compiler and tools are not checked in and versioned (even though they can be, in most cases), so there's no guarantee that your crap will even build two years down the road when you roll back to an earlier revision to fix an issue your customer is having with an older version.

    Furthermore, folks who use Maven rely on unsigned components pulled from random places on the web, and components can be silently updated, compromised or removed.

    I could go on and on. Java devs are sloppy with their dependencies and tooling, and it's no fault of their own -- it's just that their platform is brain dead and outdated. .NET had side-by-side deployments and signed assemblies in _2001_.

    Also, looking down the thread, you seem to imply that I work on Microsoft products. I don't. I left Microsoft quite a while ago. These days it's mostly C++ and Python. Couldn't bring myself to code Java, sorry.

  122. Re:There's nothing wrong with versioning your tool by melted · · Score: 1

    You can (and should) check in the C++ compiler separately from Visual Studio. It's a free download from Microsoft -- no reason not to check it in. You should also check in any other compilers and interpreters you use. If you use MSBuild or make on Windows platform to build your code, you should check it in as well. The beauty of MSBuild is that it can take VS project files and build stuff without needing Visual Studio.

  123. Re:The real reason why they don't use Visual Studi by Anonymous Coward · · Score: 0

    There's actually no reason why you can't set a conditional breakpoint on your local system. You just need to have windbg installed and the appropriate sources and symbols. There's nothing magical about using Visual Studio for debugging.

  124. Re:The real reason why they don't use Visual Studi by ahabswhale · · Score: 1

    I'm afraid you know very little about Java development. Perhaps you just worked with incompetent developers but I haven't worked on a Java project in many years that works even remotely as you describe it.

    Any company using Maven that's got any sense at all uses local repos so what you're talking about just can't happen short of your repo getting corrupted.

    For companies using ant, we check in all our jar dependencies. This is by far the most common thing I see as a consultant. I've never had any difficulty building old versions of code.

    Your dislike of Java appears to taint your understanding of how it's actually developed. There are certainly retarded ways to manage your code and dependencies but they aren't a Java or tooling issue since there are plenty of tools to deal with these issues.

    In any event, you cannot claim the high ground by stating you code C++, which is a disaster of a language. In any just world, Stroustrup would be shot for creating it. Python is actually pretty sweet.

    Finally, feel free to rip on Java. It's not my preferred language but it is what I make my living on.

    --
    Are agnostics skeptical of unicorns too?
  125. Proof carrying code by DamnStupidElf · · Score: 1

    If you google the subject, you'll find several projects that implement type safety, termination, and correctness proofs at the assembly language level. The proofs are more complex and sometimes limit the allowed instructions to a subset of the original machine language, but in theory it is possible to prove just about any property about any arbitrary machine code program, given a suitable model of the hardware and OS and a trusted proof verifier.

  126. Re:Programmers I've worked with by Abcd1234 · · Score: 1

    oO! Wow, I've *never* come across a modern build of Vim, for any distro, that didn't have vsplit compiled in. You have my pity. :)

  127. Re:The real reason why they don't use Visual Studi by Ash-Fox · · Score: 1

    I have no idea what you're talking about or how it relates to my question.

    It's pretty well spelled out how it relates. Developing the application in Microsoft's tools does not have the issues Java does and that includes not having some of the issues you get with java on OS X. My entire response did not refer to OS X.

    Once again, I ask what wet dream I'm missing out on as a Java developer that all these developers at Microsoft seem to have?

    I already gave three points to that without really giving much thought, read the response I gave again.

    --
    Change is certain; progress is not obligatory.
  128. Re:The real reason why they don't use Visual Studi by melted · · Score: 1

    Those local Maven repos are not versioned within the source control system, and therefore are unreliable. And checking in only jars is insufficient - in order for things to be 100% repeatable and isolated, you need to check in all your tooling, jdk and compilers as well, and make sure the developers launch a separate bash session which makes sure you're using only the tools in the enlistment, and not the ones installed locally on the box. No one does this.

    I like how you avoided the jar hell issue and the issue where people grab cryptographically unverified jars off the web and stuff them into production code with very little testing (you aren't going to tell me you thoroughly tested each of the jars that your latest dependency pulled in through Maven). That's zealotry at its best. Perhaps if the java community (or should I call it a committee?) was willing to admit that Java has severe deficiencies, it would improve faster? I know it's far easier to just rip on Microsoft while writing yet another web or IoC framework that no one will ever use.

  129. Re:Unless I forced to, I would never touch those k by Mr+Z · · Score: 1

    These days, many compilers offer mechanisms to access SIMD instructions from the high level language, so that you don't have to yourself. These vary from special vector types, to "intrinsic functions" that model the target instructions, to directives to specify pointer alignment and loop iteration count properties. The compiler for the architecture family I work on is rather sophisticated in this regards, and it does some really impressive transformations. Even without annotations, it can figure quite a lot out if enough of the program is visible to it.

    That said, I sometimes still pop down to hand-coded assembly when it really, really matters, but these days it's usually to do things that can't be expressed in C/C++, such as manipulating interrupt vector tables or aspects of the run time environment. Most people I know that try to "optimize" something by writing assembly code delude themselves that they can outperform the compiler. I remember seeing this one several-page assembly function that had been optimized over several months by one of our teams at work get replaced by ~30-40 lines of properly written C code that compiled to 30% faster code. Assembly code isn't magic.

  130. Re:The real reason why they don't use Visual Studi by ahabswhale · · Score: 1

    I can version a repo if I want to. Again, what special magic does Microsoft have? As for repeatable, isolated, etc...it's called a build script which you can execute outside of an IDE, on the command line. As for checking in the JDK, I can but I don't need to because I can retrieve any version I want at will.

    As for Jar hell issue...most sources of open source jars also provide hashes to verify you've got the right jar. It's not rocket science. Granted, not everyone verifies these hashes, but that's not a Java issue.

    Java does have deficiencies but you have failed to name any of them. Congrats! I have no problem discussing Java's deficiencies because I also have no problem being one of its harshest critics. Like I said before, it's not my language of choice -- it's the language I put food on the table with.

    Finally, where did I rip on Microsoft? I certainly can, but I challenge you to find it anywhere in this thread. The only zealot here is you.

    --
    Are agnostics skeptical of unicorns too?
  131. I don't think so... by Estanislao+Mart�nez · · Score: 1

    If CPython didn't suck so bad at performance, Google wouldn't have had to write "Go".

    I don't think so. Go is very different than Python. Python's designed to be a really simple procedural + OOP language. Go is procedural only, but the big idea is to facilitate concurrent programming by forbidding shared mutable state, and have all thread synchronization be done by communications channels. Even if Python suddenly became a lot faster, it would still be haunted by shared memory issues when it comes to concurrent programming, and Go would still have the advantage for writing concurrent code.

  132. Re:The real reason why they don't use Visual Studi by melted · · Score: 1

    And you need to build and deploy crap by hand, and then attach the debugger, tell it where the sources are, etc.

    Sure, WinDbg is a viable option, but far from a convenient one. Some folks at MSFT use Rascal as well - an xcopy-able custom build of VS2005 debugger.

  133. Re:The real reason why they don't use Visual Studi by melted · · Score: 1

    Apparently you don't understand what "jar hell" means. Let me really break it down for you.

    Let's say you use foo.jar, which relies on a concrete version of log4j.jar. Let's also say foo.jar requires bar.jar, which in turn requires a different version of log4j.jar.

    In .NET you deploy two different assemblies side by side and they coexist peacefully.

    In Java you're fucked. Now, there are OSGI bundles now, but their use is far from widespread. This means that Java developers have no fucking clue whether jars in their their extensive dependency hierarchies are even fully compatible. :-)

  134. Re:The real reason why they don't use Visual Studi by ahabswhale · · Score: 1

    Well originally you were arguing that it was impossible to rebuild your code to be exactly the way it was in a previous release. Now you're talking about dependency resolution.

    In any event OSGI and Java Modules (JSR 277) address the dependency management issue. I do agree it has sucked up till recently and I would also agree it has taken too long to get implemented. However, in practice this has had little impact for most since most Java jars are designed for backward compatibility so grabbing the latest one is safe but one exception is with the xerces libraries which are pretty notorious for causing issues if you don't have your shit straight. I've been doing Java since 1.1 and the only time this has been an issue is with xerces.

    I still don't see any wet dreams on the horizon though.

    --
    Are agnostics skeptical of unicorns too?
  135. Curious by mahadiga · · Score: 1

    Are there any IDEs for Kernel Programming?

    --
    I'd like to buy homeland for our 10 million people. http://twitter.com/mahadiga
  136. Re: So what? Okay, here's "what". by dsmall · · Score: 1

    ... The discussion is wobbling around Microsoft's coders and tools and why machine code isn't necessary anymore ...

          And here we were just discussing yet-another-chip-bug in an Intel chip which affects, as they say, 'three guesses and two don't count', yes, a Microsoft product. (Remember? Something about timer interrupts which can get stepped on by other timers, hanging the system. It's a known bug. In fact, there's 69 pages of known bugs in the i7 chip "errata" sheet.)

              I would (gently) ask this: Which programmer is more likely to make the mistake of relying on this timer:

    Programmer A, who learned C++ in college and is wizard at high level abstraction, or,

    Programmer B, who has gone down to the bare metal and programmed chips?

    Who is more likely to actually read the errata sheet that says, 'Don't use this frickin' timer'?

              My answer is that people who have read chip datasheets (and errata sheets!) before are far more likely to read them again before trying to use that (broken) timer on the i7 chip.

              Something else which really troubles me is how hard this bug may have been to find. Windows crashed? And the processor hung, not "leaving any tracks" in memory? I will just mention that this has happened to me a time or two (*cough, cough*). Just realizing it was a seperate and new bug was probably awful.

              Now imagine you're the poor slob at Redmond who has to fix this! You're told: "Windows Server crashes. Fix it." What are you gonna do? If you don't have an in-circuit emulator that can "watch" the crash, you are in for some real debugging hell. I've been there.

              Someone had to fix this problem and make a "hot patch". What language do you think they used, APL?

              Someone still has to read the datasheets that chip manufacturers put out, in particular the North/Southbridge chipsets. The Linux people are getting really good at it.

              People overclock RAM. They have to understand enough about SDRAM to do that. That's machine level clock-cycle stuff. They also overclock CPU's and use amazing cooling systems (anyone for liquid nitrogen?).

              Back When Dinosaurs Ruled The Earth and I was in college, I was told that assembly was on its way out and a High Level Language, PASCAL, was going to be the standard. This was 1976-1980.

              It's been awhile since I've even seen a PASCAL compiler, but the Visual C debugger shows me RAM, disassembly of opcodes, and all the Intel registers step-by-step ... and man, does it ever help to know what the hell each assembly instruction does.

              There's a time and place for high level abstraction. And there's a time and place for talking to the chips. I suspect that people's opinions about this are something like the C "brace wars" (the "proper" placement of "{}".)

              Enjoy --

              Dave Small

  137. Re:Programmers I've worked with by FreakyGreenLeaky · · Score: 1

    There are earlier version which don't have vsplit. Depends what your definition of "modern" is. Remember there are many server installations which are difficult to upgrade for many reasons.

    Besides all that, how exactly is splitting the screen vertically going to help with lines which are so long they're either truncated or wrapped? Vertical splitting is for editing two files in parallel - as with horizontal split. I don't follow how splitting is relevant here.

  138. Re:The real reason why they don't use Visual Studi by melted · · Score: 1

    Well, for all practical purposes in most (99%) of Java dev teams, it is impossible to rebuild a version from 2 years ago an be sure it's exactly the same (modulo the fixes). No one uses versioning for tools, jre and and jars. Everyone uses Maven and pulls the deps either directly from maven repos on the web, or set up Nexus, which is not versioned either. In addition, folks see nothing wrong in deploying their code on a newer (or just plain different) version of a JRE. They just cross their fingers and hope it will work somehow. I know it for a fact that OpenJDK, for instance, doesn't even run Netbeans properly.

    You may be doing things differently, but you're the exception rather than the rule.

    >> Java jars are designed for backward compatibility
    >> so grabbing the latest one is safe

    Heard that tune MANY times. The simple fact is, YOU DON'T KNOW THIS. That's precisely my point. Some Joe Sixpack changes calling semantics of a function on a whim and you end up with hairy issues in production, because a function, for instance, throws the kind of exception you don't catch further up the stack.

    It will be another three or four years until OSGI becomes mainstream. By then .NET will have had cryptographically verified side-by-side deployment of code for well over a decade.

  139. Re:Unless I forced to, I would never touch those k by cheesybagel · · Score: 1

    Guess what Wine uses to have hardware acceleration in their DirectX emulation: OpenGL...

  140. Re:Programmers I've worked with by Abcd1234 · · Score: 1

    Besides all that, how exactly is splitting the screen vertically going to help with lines which are so long they're either truncated or wrapped? Vertical splitting is for editing two files in parallel - as with horizontal split. I don't follow how splitting is relevant here.

    Umm... exactly. You *are* aware that programmers typically edit multiple files in parallel, right? Therefore having a maximized xterm, where that viewport is split, both horizontally and vertically, each window displaying a different file (or in the case of vim, a QuickFix list), is a very common and useful work pattern.

    Your problem is you made the silly assumption that, because I use a maximized xterm, I must therefore be writing code with 152 column lines, as opposed to utilizing that extra real-estate for another, more useful purpose. You're wrong, of course. But, please, don't let me stop you from enjoying your precarious perch upon your ever-so-high horse.

  141. Re:The real reason why they don't use Visual Studi by ahabswhale · · Score: 1

    "By then .NET will have had cryptographically verified side-by-side deployment of code for well over a decade."

    And nobody in the Java community cares. Somehow we manage to survive without it. In fact, I've never ever heard from any Java developer bemoaning the fact that Java doesn't have "cryptographically verified side-by-side deployment of code". Nor have I ever had an issue that made me even think I need that I might need it. So obviously it's only important in your mind.

    --
    Are agnostics skeptical of unicorns too?
  142. Re:Programmers I've worked with by FreakyGreenLeaky · · Score: 1

    OK, I made the wrong assumption. Does that make you feel better? ;)

    I edit various files in parallel all the time. However, I prefer using multiple screens each with multiple xterms - much more productive.

  143. Re:Programmers I've worked with by Abcd1234 · · Score: 1

    I prefer using multiple screens each with multiple xterms - much more productive.

    For you. People *are* different you know. :)

    Personally, I find multiple xterms get lost, while splitting a single xterm makes it trivial to use the keyboard to switch between buffers, add and remove splits, etc, while GNU Screen makes it trivial to add and remove additional sessions and switch between those via the keyboard. This setup also reduces RSI, as there's less movement between keyboard and mouse.

    And clearly I'm not the only one who prefers this type of setup given the existence of ratpoison, wmii, and a whole host of other tiling window managers.

  144. write programs through interpretative dance... by gestalt_n_pepper · · Score: 1

    You mean Microsoft *didn't* write Vista using interpretive dance? I figured it was that or the "James Joyce" emulator program written in GWBasic in 1983.

    --
    Please do not read this sig. Thank you.
  145. Re:Programmers I've worked with by Anonymous Coward · · Score: 0

    Or simpler still, programmers that prefer commandline tools are much more likely to have been programming when commandline tools were the only option. That would make them more experienced than the IDE only crowd which should lead to better output.