Lang.NEXT 2012 Expert Panel: Web and Cloud Programming (and more)

Download this episode

Download Video

Description

What happens when Anders Hejlsberg, Gilad Bracha, Martin Odersky, and Peter Alvaro get together for an interactive panel moderated by Erik Meijer?

Tune in. Smiley

Day:

1

Embed

Format

Available formats for this video:

Actual format may change based on video formats available and browser capability.

    The Discussion

    • User profile image
      exoteric

      Is there a recording for this? It'd be stellar to have it. Smiley

    • User profile image
      Charles

      Yes, there is (for all of the sessions you see posted, in fact). Unfortunately, in this case, the maxed out audio signal was too over the top when Erik screamed Smiley So, we are spending more time trying to figure out how to protect the eardrums of users... Almost there...

      Stay tuned.

      C


    • User profile image
      AceHack

      My eardrums can take it, please post Smiley

    • User profile image
      Charles

      @AceHack: We will post. Have no fear.

      C

    • User profile image
      felix9

      Well, I used to be a fan of Heavy-Metal bands, so ......

    • User profile image
      AceHack

      So worth the wait.  I vote best video of channel 9 all time.  Wish there was a 10 star button.

    • User profile image
      Petr

      It's very strange that this panel didn't mentioned F# at all.
      Martin said completely wrong thing that only Scala has functional data collections. F# has functional data structures from the inception and it is one of the Visual Studio official languages supported (supposedly) by Microsoft. Is it only my impression or MS should promote F# a little bit more if it's not going to drop its support?

    • User profile image
      llemieng

      @Petr: Haskell, Ocaml, ml etc have functional datastructures as well but they don't apply the uniform return type principle in their collections.

      val aSet = Set(1, 2, 3)
      val result = aSet.filter(x => somePredicate(x))

      In Scala the type of 'result' will be a Set[Int], in F# & C# it will be an IEnumerable. Scala is one of the few languages that has a type system that is powerfull enaugh to allow this trickery.

      Of course Scala can have behave similarly as F# or C# if you want it to (aSet.iterator.filter... )

      A more powerfull example:

      val aString = "string"
      val stringResult = aString.map(c => c.toUpper) // result is a String: "STRING"
      val listResult = aString.map(c => c.toInt) // result is a Vector[Int]: Vector(115, 116, 114, 105, 110, 103)
      

       http://www.scala-lang.org/docu/files/collections-api/collections_2.html

    • User profile image
      Petr

      F# set operations also return sets :

      let set = Set([1; 2; 3])
      let filtered = set |> Set.filter (fun elm -> elm = 2)
      let mapped = set |> Set.map (fun elm -> elm.ToString() )

      >

      val set : Set<int> = set [1; 2; 3]
      val filtered : Set<int> = set [2]
      val mapped : Set<string> = set ["1"; "2"; "3"]

    • User profile image
      llemieng

      @Petr: You use Set.filter, that's cheating, can you write

      let filtered = set |> filter (fun elm -> elm = 2)?

      (you can in Haskell, but I don't think F# has type classes or type constructors)

      In scala filter is implemented once, for all collections (of course some collections override & specialize for performance), it still supports the uniform return type principle and you don't need to tell it specifically what function it has to call.

      In F# you have to reïmplement filter for all collections and then you still can't handle my last example with strings.

    • User profile image
      Petr

      @llemieng: I wouldn't said its cheacting.
      From the point of view of lang user it's just little syntactic difference:) It is difference in internal library implementation. Scala has type classes but only because JVM types erasure which results to worse runtime performance and lacking type inference. F# have no type classes but it has excellent type inference and it's strict type system leads to virtually bug free applications.
      But we are going to start holy war here, arn't we :)

      My point is that F# HAS functional data collections and I can hardy believe that MS hosted conference discussing modern languages managed to avoid mention F# in any panel discussions.

      P.S. Your string example:
      let aString = "string"
      let stringResult = aString |> Seq.map (fun c -> Char.ToUpper(c))
      let listResult = aString |> Seq.map(fun c -> int c)

    • User profile image
      llemieng

      @Petr:

      let aString = "string"

      let stringResult = aString |> Seq.map (fun c -> Char.ToUpper(c)) // returns seq<char>, not String, not expected

      let listResult = aString |> Seq.map(fun c -> int c) // returns seq<int> as expected

      And in both cases you specifically had to point out the function that F# uses and you lost type information in the first case.

      I don't agree with your comments on erasure & type classes. The reified types wouldn't help Scala one bit to achieve their collection library. (I'm not saying that reified types aren't usefull, just that they don't help here)

      And I see now that by functional datastructures, they mean efficient persistent datastructures. So, does F# have datastructures (Lists, Sets, Maps) that are immutable and have a very efficient (close to O(1)) update and delete operations?

    • User profile image
      Petr

      @llemieng: Yes, F# has efficient immutable List, Set and Map datatypes.

      About string sample. If I want map string to string I can use String.map function.

      let aString |> String.map (fun c -> Char.ToUpper(c))

      In .NET string type is a sequence of characters. I'm not sure that I want mapping operation on string implicitely transform it to array for me :)

    • User profile image
      exoteric

      Excellent. Press play on video...

      The F# examples are not as idiomatic as they could be.

      Example 1:

      let aString = "string"
      let stringResult = aString |> Seq.map Char.ToUpper
      let listResult = aString |> Seq.map int
      

      Example 2:

      let set = Set([1; 2; 3])
      let filtered = set |> Set.filter ((=) 2)
      let mapped = set |> Set.map (fun elm -> elm.ToString())

      A little bit of the "Intellisense effortlessness" is lost of course, because you're not dotting your way through functions but instead tell the compiler that it should use the filter function from the Set module, etc.

      The |> pipeline operator does ensure that you can use the same fluent style though. 

    • User profile image
      Richard.Hein

      Great panel - interesting and funny throughout.   The last question really has to make you wonder … Smiley.  I'll try to make it in person next time.

       

       

    • User profile image
      JarleSt

      Thanks for making this panel discussion available, great stuff and funny, it made me laugh out loud multiple times. Smiley

    • User profile image
      exoteric

      It was indeed very humorous.

      Good points about the skill of the library writer vs the skill of the application writer vs the application writer as a library writer.

      I do wonder what Anders meant with machine learning and its future in programming.

    • User profile image
      Moondevil

      @Petr:I think Microsoft is still uncertain what to do with F#. Microsoft does not even promote it as a Windows 8 development language.

       

    • User profile image
      Petr

      @Moondevil: Yes, it seems you're right and this is very sad

    • User profile image
      Richard.Hein

      , exoteric wrote

      It was indeed very humorous.

      Good points about the skill of the library writer vs the skill of the application writer vs the application writer as a library writer.

      I do wonder what Anders meant with machine learning and its future in programming.

      @exoteric:  Check out this session, where he mentions what Anders said there, how most people don't know what to do with machine learning in terms of language design, yet:

      http://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012/Reverend-Bayes-meet-Countess-Lovelace-Probabilistic-Programming-for-Machine-Learning

      It's funny, he mentions Anders and esoteric in the same paragraph ... oh your exo ... still.

    • User profile image
      exoteric

      , Richard.Hein wrote

      *snip*

      @exoteric:  Check out this session, where he mentions what Anders said there, how most people don't know what to do with machine learning in terms of language design, yet:

      http://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012/Reverend-Bayes-meet-Countess-Lovelace-Probabilistic-Programming-for-Machine-Learning

      It's funny, he mentions Anders and esoteric in the same paragraph ... oh your exo ... still.

      (I am actually also esoteric Smiley, I just don't use that account anymore for technical reasons.)

      Thanks for the reference. I'll check it out!

    • User profile image
      Mike

      Very interesting and funny (it's always funny with Gilad).

      Did I understand it right: Anders will be mainly occupied with JavaScript in the next years ? Will he work an a competitor to Dart ? And what happens with C# (who will be the chief architect ?) I don't expect an answer here but I'm nontheless curious.

    • User profile image
      vesuvius

      Fascinating discussion

    • User profile image
      Thorium

      Yes interesting...

      It's very strange that this panel didn't mentioned F# at all.

      I agree. In F# you can write same kind of code inside and outside a monad (="computational expression") where e.g. in C# you have to move from old imperative ("normal") code to LINQ-syntax.

       

    • User profile image
      Maximilianu

      Today, I went to the beachfront with my kids. I found a sea shell and gave it to my 4 year old daughter and said "You can hear the ocean if you put this to your ear." She put the shell to her ear and screamed. There was a hermit crab inside and it pinched her ear. She never wants to go back! LoL I know this is entirely off topic but I had to tell someone!

    • User profile image
      Karelm Liney

      I'm truly enjoying the design and layout of your website. It's a very easy on the eyes which makes it much more pleasant for me to come here and visit more often. Did you hire out a designer to create your theme? Fantastic work!

    Comments closed

    Comments have been closed since this content was published more than 30 days ago, but if you'd like to send us feedback you can Contact Us.