<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><blockquote type="cite" class="">On Mar 8, 2016, at 4:57 PM, Jon Hoffman <<a href="mailto:hoffman.jon@gmail.com" class="">hoffman.jon@gmail.com</a>> wrote:<br class=""><br class=""><br class=""><blockquote type="cite" class="">On Mar 8, 2016, at 2:38 PM, Dave Abrahams <<a href="mailto:dabrahams@apple.com" class="">dabrahams@apple.com</a>> wrote:<br class=""><br class=""><br class="">on Tue Mar 08 2016, Michael Ilseman <<a href="http://milseman-at-apple.com" class="">milseman-AT-apple.com</a>> wrote:<br class=""><br class=""><blockquote type="cite" class=""><blockquote type="cite" class=""><blockquote type="cite" class="">What makes protocols in Swift different from Java interfaces (or<br class="">Objective-C protocols for that matter) is that they support static<br class="">polymorphism and generic programming.<br class=""></blockquote><br class="">Unless I am misunderstanding what you are saying here, Java<br class="">interfaces do support generic programming:<br class=""><a href="https://docs.oracle.com/javase/tutorial/extra/generics/simple.html" class="">https://docs.oracle.com/javase/tutorial/extra/generics/simple.html</a><br class=""><https://docs.oracle.com/javase/tutorial/extra/generics/simple.html><br class=""><br class=""></blockquote><br class="">I think “static” is the operative word there.<br class=""></blockquote><br class="">Actually, “generic programming” are the operative words. I don't mean,<br class="">“does the language have a feature that it calls ‘generics?’”, I mean “does<br class="">it support the discipline of generic programming?”<br class=""><br class="">See:<br class=""><br class=""><a href="http://www.osl.iu.edu/publications/prints/2005/garcia05:_extended_comparing05.pdf" class="">http://www.osl.iu.edu/publications/prints/2005/garcia05:_extended_comparing05.pdf</a><br class="">https://books.google.com/books/about/From_Mathematics_to_Generic_Programming.html?id=UqxYBQAAQBAJ<br class=""><br class=""></blockquote><br class="">I have always looked at Generics from a Java point of view because that is the language in which I started really using them with my code. </blockquote><div class=""><br class=""></div>Yeah, but it's not about "Generics." ;-) It's about Generic Programming, which is about raising algorithms to a higher level of generality and applicability without loss of efficiency. It's the foundation of the Swift standard library and close to the heart of Protocol-Oriented Programming. If you're going to be writing about POP, you really need to understand it. I very strongly recommend the Stepanov and Rose book linked above as a way into the topic (and see the <a href="http://www.amazon.com/Mathematics-Generic-Programming-Alexander-Stepanov/product-reviews/0321942043/ref=cm_cr_arp_d_paging_btm_next_2?ie=UTF8&showViewpoints=1&pageNumber=2" class="">reviews on Amazon</a>).<div class=""><br class=""></div><div class=""><blockquote type="cite" class="">I did start reading the document during my daughter’s TaeKwonDo class tonight and it does seem pretty interesting. I will have to make time to read it in the next few days. Page 4 of the document has a chart that shows how the different languages compare. I can see, just from the top of my head that Swift has better support than some of the languages however not as well as Haskell or SML. How do you see Swift currently comparing to the other languages and how do you see it comparing in the future?<br class=""></blockquote><br class=""></div><div class="">Swift is still a very young language and there's lots we still want to do to improve support for generic programming (see the thread <a href="http://news.gmane.org/find-root.php?message_id=B51F92BB%2dA966%2d4260%2d91A5%2d12772F771AD2%40apple.com" class="">[Manifesto] Completing Generics</a>). I expect we won't adopt all of the features of those other languages because some of them do not have a high enough value-to-complexity ratio.</div><div class=""><br class=""></div></body></html>