Coffeehouse Thread

84 posts

Forum Read Only

This forum has been made read only by the site admins. No new threads or comments can be added.

"Microsoft Out of Favor With Young, Hip Developers"

Back to Forum: Coffeehouse
  • User profile image
    PaoloM

    Bass said:
    Charles said:
    *snip*

    The web is a royalty free standard with many different vendors (Apple, Mozilla, Microsoft, etc.) involved so it doesn't have the same lockin potential. The standards based web is open and a relatively slow moving target with extreme backwards compatibility.

     

    Lockin is a disaster, it leads to software rot. Software really doesn't rot, just like the Pythagorean theorem doesn't rot. But yet many enterprises are spending millions of dollars rewriting "legacy" code that is only legacy because it was locked into some vendor's platform or product line that is either retired or doesn't exist anymore. The ideal stitution is the code I write today should be useful 1000 years from now. But these days we have problems where code that is just a few years old is already "legacy". It's extremely wasteful and a lot of enterprises are seeing this. They don't want to make the same mistake by betting on proprietary technology they have no control over.

    The web is a royalty free standard with many different vendors (Apple, Mozilla, Microsoft, etc.) involved so it doesn't have the same lockin potential. The standards based web is open and a relatively slow moving target with extreme backwards compatibility.

    That is true and correct only if you consider the tiny part of development that is represented by HTML/CSS/etc.

     

    Anything that runs on the server, the vast majority of the mission-critical code, it's still absolutely victim of proprietary lock in, be it from a company, a language or a framework.

  • User profile image
    PaoloM

    Charles said:

    In some sense, we could do a better job of focusing our platform wares (how many tools does it take to do the same thing?) and highlighting the great things that are built using them. Make no mistake, Windows is a great platform to target should you want to get into the software business. Windows is a big tent and any number of applications, using any number of tools, can be written to get the most out of Windows. The question is: why has Windows client app development declined? The tooling? Maybe. What do you think?

     

    C

    The question is: why has Windows client app development declined?

    Is it? I don't know globally, but all the companies I work with have rich clients under development, especially now that WPF is finally ramping up (of course we are beyond that, and happily shipping Silverlight 4 desktop apps Smiley)

  • User profile image
    Sven Groot

    spivonious said:
    Larry Osterman said:
    *snip*

    I would write:

     

    Sub MyFunction(input as String)

       Dim dest as String = input.Replace(".", "\.")

    End Sub

     

    Let the framework designers worry about algorithm performance. I just want the result. Smiley

    Except, the language used is C++, and std::string doesn't have a replace method. Smiley

     

    Well, actually, it does have one, but it doesn't do what you'd expect.

  • User profile image
    Bass

    Sven Groot said:
    spivonious said:
    *snip*

    Except, the language used is C++, and std::string doesn't have a replace method. Smiley

     

    Well, actually, it does have one, but it doesn't do what you'd expect.

    Boost::string_algo to the rescue! Smiley

  • User profile image
    Sven Groot

    Shining Arcanine said:
    Larry Osterman said:
    *snip*

    Did you ask him what the computational complexity of his algorithm was? It looks O(nm) to me, while yours is O(n). When the entire string consists of '.', you can call it O(n^2).

     

    By the way, dotIndex will give you a compiler warning in the second one, because it is not used.

    The version with erase is is O(nm), with n the length of the string and m the number of periods.

    If you take out erase like in the alternative version with find I wrote, it's O(n). Even if you use substr I still think it's O(n). Technically my version is O(2n) and the substr version is O(4n), but that's both still linear.

     

    The erase version will reduce to O(n^2) if the string consists entirely of periods. The version without erase (with or without substr) remains O(n) regardless of the number of periods in the string.

     

    Again, I'm not contending that Larry's second version isn't better (it is). I'm just saying that using find doesn't make it O(n^2).

     

    If you want to get really technical, things aren't that simple anyway. Even Larry's good version is not really O(n) because push_back and append are not O(1) operations if the string needs to resize.

  • User profile image
    Sven Groot

    Bass said:
    Sven Groot said:
    *snip*

    Boost::string_algo to the rescue! Smiley

    Boost::string_algo to the rescue!

    That'd be my real-world solution as well. Smiley

  • User profile image
    AndyC

    Sven Groot said:
    Shining Arcanine said:
    *snip*

    The version with erase is is O(nm), with n the length of the string and m the number of periods.

    If you take out erase like in the alternative version with find I wrote, it's O(n). Even if you use substr I still think it's O(n). Technically my version is O(2n) and the substr version is O(4n), but that's both still linear.

     

    The erase version will reduce to O(n^2) if the string consists entirely of periods. The version without erase (with or without substr) remains O(n) regardless of the number of periods in the string.

     

    Again, I'm not contending that Larry's second version isn't better (it is). I'm just saying that using find doesn't make it O(n^2).

     

    If you want to get really technical, things aren't that simple anyway. Even Larry's good version is not really O(n) because push_back and append are not O(1) operations if the string needs to resize.

    Sven Groot said:
    If you take out erase like in the alternative version with find I wrote, it's O(n). Even if you use substr I still think it's O(n). Technically my version is O(2n) and the substr version is O(4n), but that's both still linear.

    Technically, the constant is considered irrelevant when doing big O, so all three versions are O(n). Which is one of the reasons why I dislike seeing big O notation being heavily relied upon for performance analysis. And, as you say, if push_back or append aren't constant time operations then any sort of big O analysis is simply wrong.

     

    EDIT: constant time, not linear. Coffee before posting. Smiley

  • User profile image
    Ian2

    Charles said:

    In some sense, we could do a better job of focusing our platform wares (how many tools does it take to do the same thing?) and highlighting the great things that are built using them. Make no mistake, Windows is a great platform to target should you want to get into the software business. Windows is a big tent and any number of applications, using any number of tools, can be written to get the most out of Windows. The question is: why has Windows client app development declined? The tooling? Maybe. What do you think?

     

    C

    Its not the tooling for sure.  IMO MS has never been cool to a large group of IT developers but the strength of the tooling is the reason why they have so many good developers now, despite that fact.

     

    I don't understand the ethos of cool, I recognise it but have no real interest in it (maybe thats another definition of a geek?)

  • User profile image
    Bass

    Ian2 said:
    Charles said:
    *snip*

    Its not the tooling for sure.  IMO MS has never been cool to a large group of IT developers but the strength of the tooling is the reason why they have so many good developers now, despite that fact.

     

    I don't understand the ethos of cool, I recognise it but have no real interest in it (maybe thats another definition of a geek?)

    The problem is I think a lot of .NET developers really haven't been exposed to anything outside of the .NET realm, and they make claims like this. I'm guilty of this as well.

     

    I've finally been exposed professionally to something other then .NET for development, and I know now that .NET is extremely overrated. C# real strength is in the language, but no so much in the libraries. I don't think the tooling is all that competitive either (VS vs Eclipse/STS). I can't really think of a single reason why I'd use ASP.NET MVC/WebForms over J2EE/Spring from a productivity standpoint. And I've been doing .NET development for years and Java for only a few months.

  • User profile image
    Ray7

    Bass said:
    Ian2 said:
    *snip*

    The problem is I think a lot of .NET developers really haven't been exposed to anything outside of the .NET realm, and they make claims like this. I'm guilty of this as well.

     

    I've finally been exposed professionally to something other then .NET for development, and I know now that .NET is extremely overrated. C# real strength is in the language, but no so much in the libraries. I don't think the tooling is all that competitive either (VS vs Eclipse/STS). I can't really think of a single reason why I'd use ASP.NET MVC/WebForms over J2EE/Spring from a productivity standpoint. And I've been doing .NET development for years and Java for only a few months.

    What do you think all these Microsoft developers were doing before .NET came along? All those who weren't doing Java I mean?

     

    Java's problem is stagnation. MS has the advantage here because they don't need a committee vote to keep the language up to date. They also have the advantage of seeing the mistakes Java made (tying the class namespaces to the machine's directory structure - what the hell were they thinking??) and fixing them.

     

    Still, the lack of a committee is why MS can keep dumping everything into the language making it more and more difficult to learn, and more and more inconsistent.

     

    The real asset is the JVM which can accept a whole wodge of languages that are superior to Java (Scala and Groovy for starters). Oh, and IntelliJ IDEA which is quite simply the best IDE on the planet. Watch iPhone developers breath a huge sigh of relief when JetBrains release an IDE for ObjectiveC (if Apple allows them to).

  • User profile image
    Charles

    Bass said:
    Sven Groot said:
    *snip*

    Boost::string_algo to the rescue! Smiley

    Or the STL...

     

    I think what Larry is trying to determine in an interview is "does this person understand the fundamentals?". If the interviewee said "Well, I'd just use  the STL or Boost and be done with it - since I know the algorithms employed there are far better than anything I could scribble out on your whiteboard in 5 minutes....", I don't think this answer would qualify as a "pass"...

    C

  • User profile image
    vesuvius

    Bass said:
    Ian2 said:
    *snip*

    The problem is I think a lot of .NET developers really haven't been exposed to anything outside of the .NET realm, and they make claims like this. I'm guilty of this as well.

     

    I've finally been exposed professionally to something other then .NET for development, and I know now that .NET is extremely overrated. C# real strength is in the language, but no so much in the libraries. I don't think the tooling is all that competitive either (VS vs Eclipse/STS). I can't really think of a single reason why I'd use ASP.NET MVC/WebForms over J2EE/Spring from a productivity standpoint. And I've been doing .NET development for years and Java for only a few months.

    Bold claims, very bold claims.

     

    @The problem is I think a lot of .NET developers really haven't been exposed to anything outside of the .NET realm, and they make claims like this. I'm guilty of this as well.

     

    Yes, this is true for a lot of "young" developers, but at the incipience of .NET in the real word there were a lot of C++ developers (me included). You will find that in the real world, a lot of C# developers are former C++ or VB6 developers, and most would claim that comparing Java and C# can only be done by a minor because they have used a variety of languages and tools before .NET

     

    @ I've finally been exposed professionally to something other then .NET for development, and I know now that .NET is extremely overrated. C# real strength is in the language, but no so much in the libraries. I don't think the tooling is all that competitive either (VS vs Eclipse/STS). I can't really think of a single reason why I'd use ASP.NET MVC/WebForms over J2EE/Spring from a productivity standpoint. And I've been doing .NET development for years and Java for only a few months.

     

    Come back and update this thread when you have been using Java after a few years, and you will find that you were comparing a "bramley apple" to a "granny smiths".

     

    I have used Java and .NET both and both are suited to some problems better than others, but there is overlap, and you are at the stage where you only critique the overlap, and are unable to deduce or make the call as to why you would use one over the other, but are voiciferous about the aforementioned minutae.

  • User profile image
    Shining Arcanine

    Sven Groot said:
    Shining Arcanine said:
    *snip*

    The version with erase is is O(nm), with n the length of the string and m the number of periods.

    If you take out erase like in the alternative version with find I wrote, it's O(n). Even if you use substr I still think it's O(n). Technically my version is O(2n) and the substr version is O(4n), but that's both still linear.

     

    The erase version will reduce to O(n^2) if the string consists entirely of periods. The version without erase (with or without substr) remains O(n) regardless of the number of periods in the string.

     

    Again, I'm not contending that Larry's second version isn't better (it is). I'm just saying that using find doesn't make it O(n^2).

     

    If you want to get really technical, things aren't that simple anyway. Even Larry's good version is not really O(n) because push_back and append are not O(1) operations if the string needs to resize.

    It can be shown that there is no real penalty for resize-able arrays if they double in size when they are expanded and shrink in size only when the capacity used is less than 1/4 the size of the array, so saying that the string needs to resize is a non-issue assuming it is implemented in this way. As a result, the resize operations can be ignored and those functions are amortized O(1) time.

     

    By the way, it is interesting to note that this algorithm is similar to quicksort, where quicksort is O(nlogn) in the average case, but in the worst case, it becomes an insertion sort, which is O(n^2).

     

    Edit: I noticed that you were talking about this same thing before my post. I feel silly now. Anyway, the problem screams for the use of a theoretical turing machine. In which case, you would think in terms of the machine reading an input tape and writing to an output tape. In that manner, it can have stages {0,1,EOF}. Stage 0 is the starting state. From state zero, the state transistion function can go multiple ways. Here is a list of rule sin the state transition function:

     

    • From state 0, upon seeing a symbol '/0', the machine will write '/0' to the output tape, advance both tape heads and move to state EOF.
    • From state 0, upon seeing a symbol '.', the machine will write '/' to the output tape, advance both tape heads and move to state 1.
    • From state 1, the machine will output '.', advance the output tape head and move to state 0.
    • From state 0, upon seeing a symbol c in the input tape, where c is not '/0' and not '.', the machine will write c to the output tape, advance both the input and output tapes and return to state 0. Obviously, this rule is actually n - 2 rules, where n is the number of characters allowed in the character set.

     

    Larry's second code example is a good approximation of this in C++.

  • User profile image
    Bass

    vesuvius said:
    Bass said:
    *snip*

    Bold claims, very bold claims.

     

    @The problem is I think a lot of .NET developers really haven't been exposed to anything outside of the .NET realm, and they make claims like this. I'm guilty of this as well.

     

    Yes, this is true for a lot of "young" developers, but at the incipience of .NET in the real word there were a lot of C++ developers (me included). You will find that in the real world, a lot of C# developers are former C++ or VB6 developers, and most would claim that comparing Java and C# can only be done by a minor because they have used a variety of languages and tools before .NET

     

    @ I've finally been exposed professionally to something other then .NET for development, and I know now that .NET is extremely overrated. C# real strength is in the language, but no so much in the libraries. I don't think the tooling is all that competitive either (VS vs Eclipse/STS). I can't really think of a single reason why I'd use ASP.NET MVC/WebForms over J2EE/Spring from a productivity standpoint. And I've been doing .NET development for years and Java for only a few months.

     

    Come back and update this thread when you have been using Java after a few years, and you will find that you were comparing a "bramley apple" to a "granny smiths".

     

    I have used Java and .NET both and both are suited to some problems better than others, but there is overlap, and you are at the stage where you only critique the overlap, and are unable to deduce or make the call as to why you would use one over the other, but are voiciferous about the aforementioned minutae.

    For some things I still think .NET makes more sense, like if I was doing Windows fat clients or something. But really the most impressive client software I've seen from a 9'er was apperently written in Delphi. Smiley Go figure.

  • User profile image
    Shining Arcanine

    Charles said:
    Bass said:
    *snip*

    Or the STL...

     

    I think what Larry is trying to determine in an interview is "does this person understand the fundamentals?". If the interviewee said "Well, I'd just use  the STL or Boost and be done with it - since I know the algorithms employed there are far better than anything I could scribble out on your whiteboard in 5 minutes....", I don't think this answer would qualify as a "pass"...

    C

    The thing is that the algorithms used in the STL or Boost libraries are only better under the circumstances for which they were designed. When they exist as a tiny piece of a much larger whole, arbitrarily stitching them together typically produces a slow algorithm. People need to work out exactly how an the higher level algorithm should work, break it into its fundamental building blocks and then implement it in a way that reuses as much existing code as possible, rather than trying to glue a bunch of library functions to get my desired result.

  • User profile image
    vesuvius

    Bass said:
    vesuvius said:
    *snip*

    For some things I still think .NET makes more sense, like if I was doing Windows fat clients or something. But really the most impressive client software I've seen from a 9'er was apperently written in Delphi. Smiley Go figure.

    What is most impressive are the problems you solve with whichever tools you have at your disposal. Some people work at at Microsoft for ages, and inevitably solve problems that are visible by the many millions. Some people write software that  helps protects millions of people whether physical or virtual. Some people write software that helps people get to anywhere they want to in a motor vehicle. Others write software that controls airports, others write software that ensures that you can go to a shop and find goods that improve your life

     

    Frameworks and programming languages are essential, but unless you are solving problems and improving peoples lives then you end up comparing VB6 with Haskell. I think it was Oscar Wilde that wrote "nothing that actually occurs is of the littlest importance" or words to that effect.

  • User profile image
    Heywood_J

    How could Microsoft possibly be out of favor with "young hip developers" with a leader like this:

     

    DEVELOPERS DEVELOPERS DEVELOPERS DEVELOPERS!!!!!

    \

    Generic Forum Image

  • User profile image
    Shining Arcanine

    vesuvius said:
    Bass said:
    *snip*

    What is most impressive are the problems you solve with whichever tools you have at your disposal. Some people work at at Microsoft for ages, and inevitably solve problems that are visible by the many millions. Some people write software that  helps protects millions of people whether physical or virtual. Some people write software that helps people get to anywhere they want to in a motor vehicle. Others write software that controls airports, others write software that ensures that you can go to a shop and find goods that improve your life

     

    Frameworks and programming languages are essential, but unless you are solving problems and improving peoples lives then you end up comparing VB6 with Haskell. I think it was Oscar Wilde that wrote "nothing that actually occurs is of the littlest importance" or words to that effect.

    I think libraries are more important than frameworks, which are merely glorified collections of libraries. You could call POSIX a framework and you would not be wrong to say that, but it is really libraries that matter.

Conversation locked

This conversation has been locked by the site admins. No new comments can be made.