Coffeehouse Thread

84 posts

"Microsoft Out of Favor With Young, Hip Developers"

Back to Forum: Coffeehouse
  • User profile image
    AndyC

    raymond said:
    jamie said:
    *snip*

     

     

    I learned Illustrator several years ago in a course at a local community college whose lab and classrooms computers are PCs using Windows XP. The college has one classrom that uses Apple computers.

     

    The challenge is the college's  Multimedia department uses mostly  the latest version of Adobe applications including Photoshop, Illustrator, Flash, Dreamweaver, and Premiere Pro and teaches JavaScript and PHP programming.

     

    The Computer Science department teaches C++ and Java  programming and does not use Visual Studio and therefore does not teach either C# or VB in its programming coures.

     

    Eight to twelve years ago this same college taught Visual Basic using Visual Studio.

     

    While I have asked the college for several years to teach courses using Expression Studio, Visual Studio  and SQL Server they simply do not have the budget to support credit courses with this software.

     

    Microsoft must provide the software for at least three years to the local colleges or they will continue to be frozen out by Adobe applications, the Open Source crowd, and C++ , Java and PHP programming languages.

     

    Microsoft giving  the software away for free to students is a great idea.

     

    Unfortunately, many colleges remain locked in to Adobe applications for implementing web sites with the JavaScript and PHP programming languages.

     

    Looks like the same college might be teaching an ASP.NET in the spring.

     

    However, to date they do not have the budget for buying Visual Studio and SQL Server.

     

    Forget about them buying Expression Studio.

     

    Suggest Microsoft give colleges for a period of five years the latest versions of Visual Studio, Expression Studio and SQL Server for free and have Microsoft Evangelists actively promote this and the free student software to as many colleges and universities as possible.

     

    For young students wanting to become web designers and web deveopers, many local colleges are not exposing students to Microsoft's applications for the simple reason they do not have the money to buy Microsoft software in addition to Adobe's.

     

    Young and hip college students are in many instances not even aware of Microsoft Expression Studio and Visual Studio existence.

     

    What we have here is a failure to communicate.

     

    http://www.youtube.com/watch?v=l_aVuS7cOIQ

    raymond said:
    While I have asked the college for several years to teach courses using Expression Studio, Visual Studio  and SQL Server they simply do not have the budget to support credit courses with this software.

    You should point them in the direction of the MSDN Academic Alliance program. It's not free, but it is unbelievably cheap and a fantastic way of providing those kinds of tools to support education.

  • User profile image
    ZippyV

    AndyC said:
    raymond said:
    *snip*

    You should point them in the direction of the MSDN Academic Alliance program. It's not free, but it is unbelievably cheap and a fantastic way of providing those kinds of tools to support education.

    MSDNAA is free for every IT student in Belgium.

  • User profile image
    Shining Arcanine

    Sven Groot said:
    Shining Arcanine said:
    *snip*

    Besides the allocation and copying, there is potentially wasted space (and the larger your growth rate, the worse that will get), heap fragmentation, and potentially additional cache misses. In a managed environment such as Java or .Net there is also the costs of zero-initializing the re-allocated array as well as added GC pressure (although this will likely be negligable).

     

    Yes, in many cases this won't make much difference. But in some rare cases, it might. Never make assumptions, and always measure before you optimize.

    Big Oh notation ignores wasted space and cache misses. Optimizations should focus on computational complexity first and "tuning" (e.g. loop invariant code motion) second.

     

    By the way, you could run an algorithm O(nlogn) algorithm on a system that has no cache and have it outperform a system that has oodles of cache that is running a O(n^2) algorithm. You just need to increase the input size and it follows from limit laws in Calculus that the lower complexity algorithm will be faster. Hacks like a cache or compiler optimizations will not change that.

  • User profile image
    Shining Arcanine

    ZippyV said:
    AndyC said:
    *snip*

    MSDNAA is free for every IT student in Belgium.

    Is Microsoft only offering it for free in Belgium or do other countries get the software for free too? If the Belgian government is subsidizing it, it really is not free, even though the costs are hidden from the university.

  • User profile image
    Uruhara

    I think a lot of it happens to do with the web application trends ...as well as mobile projects.  A lot the new guys coming out aren't even students.  ...and they use languages like ruby...python, i'm actually enjoying Scala more than my initial look at Ruby...(i'm actually just getting back into programming as I was interested in it in HS for a while and took a long hiatus) is still used, javascript is actually becoming popular and being looked at/designed? in new ways.

     

    Also we're hitting at point where a lot of them don't want/desire to work for large companies but instead start their own *garage companies* and/or work in small teams.

     

    Like when you look at a lot of the "popular" projects coming out...twitter, facebook, etc...while they're not necessarily popular for a lot of programmers,...it's a generational thing...they're obviously very popular and widely used.  None of those things are SEEMINGLY made with microsoft OR even 'apple'.  Yes they may run OS, Apple, etc(I use linux exclusively for the last 3 years strangely enough).  They just want to get it done.  They want to make a cool project and by that I don't mean a 3d robot emulator or some project that manipulates your clipboard.  They want 'social' projects...so I think that's where the 'scare' articles are going.  Honestly the way that I see it...and this is hard to explain so it's going to come out awful...  There seems to be "creative artist type that also decides to learn to program to make what he imagines" vs a "scientist or engineer" type battle.  You have the guy that knows .NET very well and is excited about adding a certain encryption to his authentication system and then you have someone that wants to 'start' the next facebook.  The funny thing is both types need each other.  Apple isn't really in the battle because they have their small niche of 'nuts'.  Unless you're working on a ipod/ipad application, etc...you're not using XCode and you're not spending $100 to HAVE THE RIGHTS TO LEARN HOW TO USE THE TOOL.  As for M$ tools...they're so widely used they're not going anywhere BUT it would be a good idea for them to start looking at a more open arena *which they are* and aim more at not just a microsoft crowd but one that allows people to build for whatever/where ever they want. Like if anyone watched Googles I/O conference yes they bragged and tooted the google horn but a lot of the really cool stuff had nothing to do with google and more so html5(which yes google has it's hands on), javascript, etc and the fact that operating systems may play a much smaller role soon.  [breathes...ok my rants over. there's my .30 cents, lol]

  • User profile image
    Sven Groot

    Shining Arcanine said:
    Sven Groot said:
    *snip*

    Big Oh notation ignores wasted space and cache misses. Optimizations should focus on computational complexity first and "tuning" (e.g. loop invariant code motion) second.

     

    By the way, you could run an algorithm O(nlogn) algorithm on a system that has no cache and have it outperform a system that has oodles of cache that is running a O(n^2) algorithm. You just need to increase the input size and it follows from limit laws in Calculus that the lower complexity algorithm will be faster. Hacks like a cache or compiler optimizations will not change that.

    Which is why Big O notation isn't the end-all of performance evaluation that some people think it is.

     

    If you go strictly by Big O notation, both Larry's second version of the string replacement algorithm and my alternative version with find are O(n). Yet Larry's version is obviously faster.

     

    Big O ignores the constants which makes it of only very limited use in real world optimization.

  • User profile image
    Sven Groot

    Charles said:
    Sven Groot said:
    *snip*

    You are such a stickler, man.... Smiley Whatever. My point was made...

    C

    The devil's in the details. Smiley

  • User profile image
    exoteric

    Shining Arcanine said:
    ZippyV said:
    *snip*

    Is Microsoft only offering it for free in Belgium or do other countries get the software for free too? If the Belgian government is subsidizing it, it really is not free, even though the costs are hidden from the university.

    I've heard rumors that Microsoft developers like to get paid for their efforts to aquire luxuries like food and shelter. - But sure, that just means it isn't free for Microsoft!

     

    That said, it makes perfect sense to pour free or inexpensive software on academia to capitalize on research and gain mind share.

  • User profile image
    Charles

    Sven Groot said:
    Charles said:
    *snip*

    The STL doesnt't have a string replacement function. That was sort of the point of recommending boost.

    Devil's in the details? Smiley

     

    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <functional>

    using namespace std;


    int main()
    {
        const int VECTOR_SIZE = 8 ;

        // Define a template class vector of integers
        typedef vector<int > IntVector ;

        //Define an iterator for template class vector of integer
        typedef IntVector::iterator IntVectorIt ;

        IntVector Numbers(VECTOR_SIZE) ;   //vector containing numbers

        IntVectorIt start, end, it ;

        start = Numbers.begin() ;   // location of first
                                    // element of Numbers

        end = Numbers.end() ;       // one past the location
                                    // last element of Numbers

        //Initialize vector Numbers
        Numbers[0] = 10 ;
        Numbers[1] = 20 ;
        Numbers[2] = 10 ;
        Numbers[3] = 15 ;
        Numbers[4] = 12 ;
        Numbers[5] = 7 ;
        Numbers[6] = 9 ;
        Numbers[7] = 10 ;

        cout << "Before calling replace" << endl ;

        // print content of Numbers
        cout << "Numbers { " ;
        for(it = start; it != end; it++)
            cout << *it << " " ;
        cout << " }\n" << endl ;

        // remove all elements from Numbers that match 10
         replace(start, end, 10, 35) ;

        cout << "After calling replace, to replace all 10's with 35" << endl ;

        // print content of Numbers
        cout << "Numbers { " ;
        for(it = start; it != end; it++)
            cout << *it << " " ;
        cout << " }\n" << endl ;

    }

     

     

     

    C

  • User profile image
    Sven Groot

    Charles said:
    Sven Groot said:
    *snip*

    Devil's in the details? Smiley

     

    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <functional>

    using namespace std;


    int main()
    {
        const int VECTOR_SIZE = 8 ;

        // Define a template class vector of integers
        typedef vector<int > IntVector ;

        //Define an iterator for template class vector of integer
        typedef IntVector::iterator IntVectorIt ;

        IntVector Numbers(VECTOR_SIZE) ;   //vector containing numbers

        IntVectorIt start, end, it ;

        start = Numbers.begin() ;   // location of first
                                    // element of Numbers

        end = Numbers.end() ;       // one past the location
                                    // last element of Numbers

        //Initialize vector Numbers
        Numbers[0] = 10 ;
        Numbers[1] = 20 ;
        Numbers[2] = 10 ;
        Numbers[3] = 15 ;
        Numbers[4] = 12 ;
        Numbers[5] = 7 ;
        Numbers[6] = 9 ;
        Numbers[7] = 10 ;

        cout << "Before calling replace" << endl ;

        // print content of Numbers
        cout << "Numbers { " ;
        for(it = start; it != end; it++)
            cout << *it << " " ;
        cout << " }\n" << endl ;

        // remove all elements from Numbers that match 10
         replace(start, end, 10, 35) ;

        cout << "After calling replace, to replace all 10's with 35" << endl ;

        // print content of Numbers
        cout << "Numbers { " ;
        for(it = start; it != end; it++)
            cout << *it << " " ;
        cout << " }\n" << endl ;

    }

     

     

     

    C

    Details indeed. Look at those functions, and tell me what they do. Then look at what Larry's code does (or what .Net's String.Replace does). Smiley

     

    Yes, the STL string class has a function named "replace", but it doesn't do what was asked for. I even already said this earlier in the thread. Tongue Out

  • User profile image
    MasterPi

    Sven Groot said:
    Shining Arcanine said:
    *snip*

    Which is why Big O notation isn't the end-all of performance evaluation that some people think it is.

     

    If you go strictly by Big O notation, both Larry's second version of the string replacement algorithm and my alternative version with find are O(n). Yet Larry's version is obviously faster.

     

    Big O ignores the constants which makes it of only very limited use in real world optimization.

    I think another issue with Big-O notation in real life application is that most of the time, we say something like resizing on average has little impact over time as n approaches infinity.

    But, you usually know n or at least have a sense of what n will be under a given scenario. If you were to plot on a graph the growth rate of different pieces of an algorithm, you need not look at where the plot ends with very large n. You would deal with some fixed frame at the very beginning of the plot, which might look completely different than what you would see with large n. In the case with resizing, it does have a performance impact for small n which probably should not be overlooked.

  • User profile image
    Charles

    Sven Groot said:
    Charles said:
    *snip*

    Details indeed. Look at those functions, and tell me what they do. Then look at what Larry's code does (or what .Net's String.Replace does). Smiley

     

    Yes, the STL string class has a function named "replace", but it doesn't do what was asked for. I even already said this earlier in the thread. Tongue Out

    True. However, I was just being a stickler on your unequivocal statement "The STL doesnt't have a string replacement function".

     

    So there. Smiley

    C

Comments closed

Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums, or Contact Us and let us know.