Entries:
Comments:
Posts:

Loading User Information from Channel 9

Something went wrong getting user information from Channel 9

Latest Achievement:

Loading User Information from MSDN

Something went wrong getting user information from MSDN

Visual Studio Achievements

Latest Achievement:

Loading Visual Studio Achievements

Something went wrong getting the Visual Studio Achievements

Brian Beckman: Monads, Monoids, and Mort

Download

Right click “Save as…”

Brian Beckman is a fascinating individual. Ex-cosmologist, ex-military operating system and simulation developer (have you ever considered processes that move both forward and backward in time? Well, Brian and team at JPL created just that. He explains in this interview...). Brian was one of the first members of Microsoft Research and one of a group of physicists who joined Microsoft in the early 90s. At Microsoft he is a passionate advocate for Mort, the somewhat ambiguous class name for novice developers. In fact, he considers himself a mort (somewhat hard to believe, honestly, but we'll go along with it...). His team works on innovative incubation projects that turn into developer platform features (like LINQ, for example) and more. Tune in to this very interesting interview. 

Brainbec's Weblog

Tags:

Follow the Discussion

  • At 27:00 into the interview, Mr. Beckman says:

    "We want to turn Visual Basic into not only the best and most popular programming language in the world but the most advanced programming language in the world."

    Wow! What an incredible statement. It even took Charles by surprise. Microsoft Research favoring VB over C#! That's got to turn the .NET programming community on its ear.

  • Mr. Beckman wrote:
    We want to turn Visual Basic into not only the best and most popular programming language in the world but the most advanced programming language in the world.
    right, there are not such thing as "the best programming language"! Microsoft Research guys should know this better that anyone, advanced... would be nice to explain how... and sience C#/VB share same runtime how VB can be more advanced than C# ?
  • taluis wrote:
    

    At 27:00 into the interview, Mr. Beckman says:

    "We want to turn Visual Basic into not only the best and most popular programming language in the world but the most advanced programming language in the world."

    Wow! What an incredible statement. It even took Charles by surprise. Microsoft Research favoring VB over C#! That's got to turn the .NET programming community on its ear.



    Want to bet Carl Franklin will get an audio clip of this and air it on his next show on .NET Rocks?

    I recommend both C#, VB.NET, JavaScript, and T-SQL if you are looking for a .NET position. I will be trying Ruby soon as well.

    Cool

    Position
    August 2006
    Position
    August 2005
    Delta
    in Position
    Programming Language Ratings
    August 2006
    Delta
    August 2005
    Status
    1 1 Java 22.377% +1.17% A
    2 2 C 17.430% -2.04% A
    3 6 (Visual) Basic 11.195% +3.44% A
    4 3 C++ 10.254% -0.26% A
    5 5 PHP 9.639% +1.77% A
    6 4 Perl 5.313% -4.57% A
    7 8 Python 3.071% +0.19% A
    8 7 C# 2.683% -0.80% A
    9 10 Delphi 2.162% +0.40% A
    10 9 JavaScript 2.019% +0.10% A
    11 11 SAS 1.986% +0.69% A
    12 13 PL/SQL 1.151% +0.19% A
    13 28 15 * Ruby 0.804% +0.54% A--
    14 21 7 * Visual FoxPro 0.631% +0.20% A-
    15 15 VB.NET 0.619% -0.06% B
    16 14 Lisp/Scheme 0.586% -0.10% B
    17 12 COBOL 0.561% -0.48% B
    18 18 Ada 0.554% +0.05% B
    19 19 Pascal 0.510% +0.02% B
    20 29 9 * D 0.456% +0.20% B


    http://www.tiobe.com/tpci.htm



  • I'm trying to figure out how to spell the name of the programming Brian keeps mentionning, Askel, askl... What's the correct name?

    Thanks Charles, what a great interview (again!). Boy, some people at Microsoft makes me feel so clueless! And that Timewarp OS stuff is one of the craziest thing I hear about.

    --Eric

    PS: answering my own post: "Haskell" Wink
  • CharlesCharles Welcome Change
    efortier wrote:
    I'm trying to figure out how to spell the name of the programming Brian keeps mentionning, Askel, askl... What's the correct name?

    Thanks Charles, what a great interview (again!). Boy, some people at Microsoft makes me feel so clueless! And that Timewarp OS stuff is one of the craziest thing I hear about.

    --Eric

    PS: answering my own post: "Haskell"


    Glad you liked the conversation. I know I did!
    C
  • William Staceystaceyw Before C# there was darkness...
    Great video.  Very interesting.  Bit sad c# will not get some of these features.  Please add the link(s) to blogs and so forth.  Thanks!
  • jason818_253.33jason818_25​3.33 Yippi skippy
    Thanks for the great video. Monads and Monoids - complex.
  • CharlesCharles Welcome Change
    staceyw wrote:
    Great video.  Very interesting.  Bit sad c# will not get some of these features.  Please add the link(s) to blogs and so forth.  Thanks!


    Here you go
    C
  • Martin Ennemosermawcc Make it so
    Ion Todirel wrote:
    
    Mr. Beckman wrote: We want to turn Visual Basic into not only the best and most popular programming language in the world but the most advanced programming language in the world.
    right, there are not such thing as "the best programming language"! Microsoft Research guys should know this better that anyone, advanced... would be nice to explain how... and sience C#/VB share same runtime how VB can be more advanced than C# ?


    C# 3.0 also targets the same runtime but is more advanced than C# 2.0. You can do a lot just by improving the compiler alone. So if more effort is put in the VB compiler in the future it will get more advanced than C#, although both target the same runtime.
  • rhmrhm
    At 07:20 in do we have the first product placement on Channel9? Smiley


    (yes, I know we see products on it all the time, but I mean the way he reaches for the can is like they would do product placement on network TV Smiley )
  • Charles wrote:
    
    efortier wrote: I'm trying to figure out how to spell the name of the programming Brian keeps mentionning, Askel, askl... What's the correct name?

    Thanks Charles, what a great interview (again!). Boy, some people at Microsoft makes me feel so clueless! And that Timewarp OS stuff is one of the craziest thing I hear about.

    --Eric

    PS: answering my own post: "Haskell"


    Glad you liked the conversation. I know I did!
    C


    Yes, it is Haskell.

    http://en.wikipedia.org/wiki/Haskell_programming_language

    Great followup video to both Erick Meijer's

    http://channel9.msdn.com/Showpost.aspx?postid=223865

    and Craig Mundie's

    http://channel9.msdn.com/Showpost.aspx?postid=220574


    Absolutely unbelievable trilogy of videos Charles, great interviews.Smiley

    Cool

  • I really liked this interview. The guy is awesome and his stories too. Wargames on a Timewarp OS, "drop everything and focus on Kuwait", and the story about the credit card id's used to track customers and the demise of a superior security system to a focused economic interest were all just great pearls and there were many many more.
    Why can't we use Timewarp simulations to help feed the hungry with the surplus of food that the developed world has, or to better optimize the resources that we have, why do we spend zillions in simulating war insted of simulating stuff that can help our ailing planet to cope with the 6 billion people that live on it? Wouldn't have that been a great idea for the ImagineCup...
    Kudos Charles!
  • Andrew Davey wrote:
    Adding late binding to C# could be done easily if they copied Boo. In Boo you can declare a variable "as duck". Then any references to members on that variable are late-bound. I like the approach because it makes the declaration explicit.

    Where it gets more awesome is if you implement the IQuackFu interface on a class. This interface defines three methods: QuackInvoke, QuackGet and QuackSet. So when calling code invokes any member on your class, the compiler actually makes it call the dispatcher methods of the interface, passing the member name and arguments.
    This basically means you can do funky stuff like add methods at runtime to a class. See http://docs.codehaus.org/pages/viewpage.action?pageId=13653 for a cool dynamic mixin example.
    That's interesting (similar to System.Object approach). Anyway i like C# how it is TODAY (clean, elegant), some dynamic features whould't be bad, obviously depends on what they add. I'm looking at VB 9 specifications and i can't say the same, too many new constructs very ugly, they extend it too fast.
  • Andrew DaveyAndrew Davey www.​aboutcode.​net

    Adding late binding to C# could be done easily if they copied Boo. In Boo you can declare a variable "as duck". Then any references to members on that variable are late-bound. I like the approach because it makes the declaration explicit.

    def Foo():
        x as duck = GetSomething()
        print x.Bar()

    Note that it's duck as in "duck typing".

    Where it gets more awesome is if you implement the IQuackFu interface on a class. This interface defines three methods: QuackInvoke, QuackGet and QuackSet. So when calling code invokes any member on your class, the compiler actually makes it call the dispatcher methods of the interface, passing the member name and arguments.
    This basically means you can do funky stuff like add methods at runtime to a class. See http://docs.codehaus.org/pages/viewpage.action?pageId=13653 for a cool dynamic mixin example.

    Adding this feature to C# would not in any way affect normal early-bound code. People are free to ignore the feature, but it's there if they really need it (e.g. with COM interop).
    Adding support for something like IQuackFu (changing to a less silly name too I bet!) would actually surpass VB's dynamic abilities.

    So in C# I'd love to see:
    void Test()
    {
      late foo = GetData(); // "late" is a new, psuedo-type, keyword.
      foo.DoSomething();
    }

  • Andrew DaveyAndrew Davey www.​aboutcode.​net

    Do people see VB's inherent verbosity getting the in way of implementing features, like lambda expressions, in way that won't confuse Mort?

    In C# 3.0:
      list.Where(x => x == 42)
    is nice and succint.

    I've not been able to find a VB 9 version of that yet. The VB future's website still uses "AddressOf" to a seperate function.
    Does anyone know what the anonymous method/closure/lambda expression syntax looks like in VB 9?

  • Andrew Davey wrote:
    
    So in C# I'd love to see:
    void Test()
    {
      late foo = GetData(); // "late" is a new, psuedo-type, keyword.
      foo.DoSomething();
    }


    How is this different from how LINQ uses C# 3.x for example? It's not RTM yet which is too bad yeah. [C]
  • Andrew DaveyAndrew Davey www.​aboutcode.​net
    androidi wrote:
    
    Andrew Davey wrote: 
    So in C# I'd love to see:
    void Test()
    {
      late foo = GetData(); // "late" is a new, psuedo-type, keyword.
      foo.DoSomething();
    }


    How is this different from how LINQ uses C# 3.x for example? It's not RTM yet which is too bad yeah.


    Er.. LINQ stuff is statically typed. Here I'm talking about late binding (i.e. at runtime).
  • John Melville-- MDJohn Melville-- MD Equality Through Technology

    Andrew Davey wrote: 
    So in C# I'd love to see:
    void Test()
    {
      late foo = GetData(); // "late" is a new, psuedo-type, keyword.
      foo.DoSomething();
    }


    In C# 3.0 I think you can build 95% of this with extension methods, like this:

    namespace DoDynamic {
        public static class DoDynamic
        {
            public static object call (this object s, string name,
    param object[] parameters) { // find and call the function using reflection } } }




    Your sample becomes:
    void Test()
    {
      object foo = GetData(); // "late" is a new, psuedo-type, keyword.
      foo.Call("DoSomething");
    }.



    In adddition to being doable with the next c# as it is currently specified this syntax also makes the dynamic nature of each
    call plainly obvious, and it is possible to chose dynamic or static on a per call, rather than a per-object basis.

    Not exactly what you asked for, but pretty close and already working (in beta builds.)





  • Andrew DaveyAndrew Davey www.​aboutcode.​net
    John Melville, MD wrote:
    
    In C# 3.0 I think you can build 95% of this with extension methods, like this:

    namespace DoDynamic {
        public static class DoDynamic
        {
            public static object call (this object s, string name,
    param object[] parameters) { // find and call the function using reflection } } }




    Your sample becomes:
    void Test()
    {
      object foo = GetData(); // "late" is a new, psuedo-type, keyword.
      foo.Call("DoSomething");
    }.



    In adddition to being doable with the next c# as it is currently specified this syntax also makes the dynamic nature of each
    call plainly obvious, and it is possible to chose dynamic or static on a per call, rather than a per-object basis.

    Not exactly what you asked for, but pretty close and already working (in beta builds.)







    That's a good compromise for now I guess. I could also then add "Get" and "Set" extension methods for properties...
  • Hia...

    How much did pepsi pay him for the commecial ?

    Tongue Out
  • CharlesCharles Welcome Change
    shoshan wrote:
    Hia...

    How much did pepsi pay him for the commecial ?



    By the way, I was drinking Coke. Smiley They didn't want to pay enough to get on C9 (Just kidding!)

    The only inference that should be made from Brian drinking diet Pepsi on camera is that Brian likes diet Pepsi... As you know, soft drinks are free at MS and we have both Pepsi and Coke in all fridges.

    Maybe Pepsi makes you smarter? Hmm...

    C
  • The next time you interview one of these 'Physics Mafia' guys, I'd be interested in knowing their answer to the following question: "What is one Megabyte?"

    If they answer 106 or 1,000,000 they are correct.

    If they answer 220 or 1,048,576 (which is what the dir command thinks it is) I would be greatly saddened.

  • Tommy CarlierTommyCarlier Widen your gaze
    Well, we are talking about binary data, as in zeros and ones. So 220 is more logical.
    1KB = 1024 bytes
    1MB = 1024 KB = 1024 * 1024 bytes
    1GB = 1024 MB = 1024 * 1024 KB = 1024 * 1024 * 1024 bytes

    In binary:
    1KB = 100 0000 0000 bytes
    1MB = 1 0000 0000 0000 0000 bytes
    1 GB = 100 0000 0000 0000 0000 0000 0000 0000 bytes
  • ChadkChadk excuse me - do you has a flavor?
    Charles wrote:

    Maybe Pepsi makes you smarter? Hmm...

    C

    Worked for me. Im all in for diet pepsi. The taste of normal dark-sugar-water, is just like.... Eeeek
  • TommyCarlier wrote:
    Well, we are talking about binary data, as in zeros and ones. So 220 is more logical.
    1KB = 1024 bytes
    1MB = 1024 KB = 1024 * 1024 bytes
    1GB = 1024 MB = 1024 * 1024 KB = 1024 * 1024 * 1024 bytes

    In binary:
    1KB = 100 0000 0000 bytes
    1MB = 1 0000 0000 0000 0000 bytes
    1 GB = 100 0000 0000 0000 0000 0000 0000 0000 bytes


    How is using the wrong values more logical just because we're talking about binary data?  G, M, k, etc. are all decimal prefixes.  What is more logical is to use the binary prefixes (Gi, Mi, Ki, etc.) when talking about binary data.

    http://en.wikipedia.org/wiki/Binary_prefix
  • cain wrote:
    

    How is using the wrong values more logical just because we're talking about binary data?  G, M, k, etc. are all decimal prefixes.  What is more logical is to use the binary prefixes (Gi, Mi, Ki, etc.) when talking about binary data.

    http://en.wikipedia.org/wiki/Binary_prefix


    From the same article:
    "However, they have not yet been widely adopted by manufacturers and individuals; many continue to use the SI prefixes in a binary sense, despite the lack of support from official bodies. As a result, there is no unambiguous notation for decimal multiples of bits and bytes."
    The current methodology may not be strictly correct but it is understood. Can you imagine the resulting mess from changing binary data metrics at this late stage? Perplexed
  • jbwebb wrote:

    The current methodology may not be strictly correct but it is understood.

    Oh, really? Do people really understand that when talking about bandwidth or processor speed the prefixes have decimal meanings?
    jbwebb wrote:
    Can you imagine the resulting mess from changing binary data metrics at this late stage?
    I'm old enough that I don't need to imagine it. I lived in a world where kilo still had an unambiguous meaning. It was orderly, peaceful world of shiny happy people. "Late stage", huh? In physics, kilo has meant 1000 for hundreds of years. See the section 'Historical context' at the NIST site:
     
    NIST wrote:
    Once upon a time, computer professionals noticed that 210 was very nearly equal to 1000 and started using the SI prefix "kilo" to mean 1024. That worked well enough for a decade or two because everybody who talked kilobytes knew that the term implied 1024 bytes. But, almost overnight a much more numerous "everybody" bought computers, and the trade computer professionals needed to talk to physicists and engineers and even to ordinary people, most of whom know that a kilometer is 1000 meters and a kilogram is 1000 grams.

    Side note: Somebody please correct the link to Brian's blog to read "Brianbec's weblog" instead of "Brainbec's weblog".

  • tourist wrote:
    

    Oh, really? Do people really understand that when talking about bandwidth or processor speed the prefixes have decimal meanings?



    Anyone technical enough to know about bytes, bits and hertz would be aware of the peculiarity about measuring quantities of bytes.

    I'm not saying it's correct, it's just the way it is. Standards are often illogical. For example, how many standard definitions of a 'mile' are there? Imperial, US Survey, Nautical, Roman, etc. Which one of those is correct?

    This could make a good poll for the other Niners:
    How many of you are using or plan to use correct SI units?
    one kibibit  1 Kibit = 210 bit = 1024 bit
    one kilobit  1 kbit = 103 bit = 1000 bit
    one mebibyte  1 MiB = 220 B = 1 048 576 B
    one megabyte  1 MB = 106 B = 1 000 000 B
    one gibibyte  1 GiB = 230 B = 1 073 741 824 B
    one gigabyte  1 GB = 109 B = 1 000 000 000 B

  • Charles wrote:
    
    shoshan wrote: Hia...

    How much did pepsi pay him for the commecial ?



    By the way, I was drinking Coke. They didn't want to pay enough to get on C9 (Just kidding!)

    The only inference that should be made from Brian drinking diet Pepsi on camera is that Brian likes diet Pepsi... As you know, soft drinks are free at MS and we have both Pepsi and Coke in all fridges.

    Maybe Pepsi makes you smarter? Hmm...

    C
    o yes

    Pepsi = C#;
    Cola = VB; 

    Big Smile
  • samdruksamdruk samdruk
    Ion Todirel wrote:
    
    Mr. Beckman wrote: We want to turn Visual Basic into not only the best and most popular programming language in the world but the most advanced programming language in the world.
    right, there are not such thing as "the best programming language"! Microsoft Research guys should know this better that anyone, advanced... would be nice to explain how... and sience C#/VB share same runtime how VB can be more advanced than C# ?


    One minor correction: Brian is not in Microsoft Research anymore. Brian and his team (including Erik Meijer) work in the Data Programmability team in SQL Server (as do I, for that matter) and do a lot of deeply collaborative development with the VB product team.

    Brian knows as well as anyone how high a bar it would be to be the "best programming language". I'm happy he's trying that hard, and I think it will be pretty interesting to see how far it can go. As for C#/VB not being different, let me say they absolutely can be. Sharing a run-time does not mean they are limited to the same semantics and feature sets across the board (as programming languges). Consider the recent IronPython or PHP.NET releases--they use the same runtime as C# but have very different features (and in different dimensions you might consider one or the other more advanced). I can't quite remember if the Haskell implementation in .NET Brian was playing with last year was publically available or not, but it falls into the same camp. 

     

  • It's funny that you're arguing about wether a K is 1000 or 1024
    I presume it all depends on context ...
    In my view having new abbreviations such as Ki, Gi & Mi would not be easily adopted ...
    Proof: you're still using the Gallon, Mile, Pound , etc.. while the rest of the world are using the Metric system (Kg,Km, Litre,.. etc)
    Perplexed
  • NelsonNJSS NJSS


    I don't know about you guys...

    But starting from today...I will try to learn more about F#....


Remove this comment

Remove this thread

close

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.