Hi Chris and everyone else,

So PerfectlySoft made Perfect-Python months ago to help Swift import python 
objects and libraries. However, it may reduce the strong type checking. Any 
idea to avoid it?

https://github.com/PerfectlySoft/Perfect-Python 
<https://github.com/PerfectlySoft/Perfect-Python>

You can also try Perfect-TensorFlow as well - the TensorFlow Swift Binding, 
which supports latest one -  TensorFlow 1.4.0 released today.

https://github.com/PerfectlySoft/Perfect-TensorFlow 
<https://github.com/PerfectlySoft/Perfect-TensorFlow>

Rocky 

> On Oct 28, 2017, at 9:45 AM, Maxim Veksler via swift-evolution 
> <swift-evolution at swift.org 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>> wrote:
> > 
> > Hey Guys,
> > 
> > The big data and machine learning world is dominated by Python, Scala an R. 
> > 
> > I'm a Swifter by heart, but not so much by tools of trait. 
> 
> Hi Max,
> 
> I’m very interested in this topic, with a specific focus on Python.  It isn’t 
> the immediate thing on my priority list to deal with, but I hope that we get 
> to push on this.
> 
> In short, I think we should build a simple Swift/Python interop story.  This 
> sort of thing has be built numerous times for many languages (owing to 
> Python’s great support for embed-ability), including things like PyObjC, 
> boost.python, and many others.
> 
> In Swift, it is straightforward to make this example 
> (http://cs231n.github.io/python-numpy-tutorial/#numpy-arrays 
> <http://cs231n.github.io/python-numpy-tutorial/#numpy-arrays> 
> <http://cs231n.github.io/python-numpy-tutorial/#numpy-arrays 
> <http://cs231n.github.io/python-numpy-tutorial/#numpy-arrays>>) look 
> something like this:
> 
>       let np = Python.import(“numpy”)   // Returns a value of type 
> Python.Object.
>       let a = np.array([1, 2, 3])
>       print(type(a))    // Whether we want to support type(x) or use the 
> Swift equivalent would be up for discussion of course!
>       print(a.shape)
>       print(a[0], a[1], a[2])
>       a[0] = 5
>       print(a)
> 
>       let b = np.array([[1,2,3],[4,5,6]])
>       print(b.shape)
>       print(b[0, 0], b[0, 1], b[1, 0])
> 
> … which is to say, exactly identical to the Python version except that new 
> variables need to be declared with let/var.  This can be done by blessing 
> Python.Object (which is identical to “PyObject*” at the machine level) with 
> some special dynamic name lookup behavior:  Dot syntax turns into a call to 
> PyObject_GetAttrString, subscripts turn into PyObject_GetItem, calls turn 
> into PyObject_Call, etc.  ARC would be implemented with INCREF etc.
> 
> If we do this, the vast majority of the Python ecosystem should be directly 
> usable from within Swift code, and the only a few major syntactic differences 
> (e.g. ranges work differently).  We would add failable inits to the primitive 
> datatypes like Int/String/etc to convert Python.Object values into them, and 
> add the corresponding non-failable conversions from Python.Object to those 
> primitives.
> 
> Overall, I think it will provide a really nice experience, and allow us to 
> leverage the vast majority of the Python ecosystem directly in Swift code. 
> This project would also have much more narrow impact on the Swift compiler 
> than the ObjC importer (since it works completely differently).  For a first 
> cut, I don’t think we would have to worry about Swift classes subclassing 
> Python classes, for example.
> 
> -Chris
> 
> 
> 
> 
> 
> > 
> > I'd appreciate a constructive discussion on how that could be changed.
> > 
> > While R is a non goal for obvious reasons, i'd argue that since both Scala 
> > and Python are general purpose languages, taking them head to head might be 
> > a low hanging fruit.
> > 
> > To make the claim I'd like to reference to projects such as 
> > 
> >  - Hadoop, Spark, Hive are all huge eco-systems which are entirely JVM 
> > based.
> >  - Apache Parquet, a highly efficient column based storage format for big 
> > data analytics which was implemented in Java, and C++.
> >  - Apache Arrow, a physical memory spec that big data systems can use to 
> > allow zero transformations on data transferred between systems. Which (for 
> > obvious reasons) focused on JVM, to C interoperability.
> > 
> > Python's Buffer Protocol which ensures it's predominance (for the time 
> > being) as a prime candidate for data science related projects 
> > https://jeffknupp.com/blog/2017/09/15/python-is-the-fastest-growing-programming-language-due-to-a-feature-youve-never-heard-of/
> >  
> > <https://jeffknupp.com/blog/2017/09/15/python-is-the-fastest-growing-programming-language-due-to-a-feature-youve-never-heard-of/>
> >  
> > <https://jeffknupp.com/blog/2017/09/15/python-is-the-fastest-growing-programming-language-due-to-a-feature-youve-never-heard-of/
> >  
> > <https://jeffknupp.com/blog/2017/09/15/python-is-the-fastest-growing-programming-language-due-to-a-feature-youve-never-heard-of/>>
> > 
> > While Swift's Memory Ownership manifesto touches similar turf discussing 
> > copy on write and optimizing memory access overhead it IMHO takes a system 
> > level perspective targeting projects such as kernel code. I'd suggest that 
> > viewing the problem from an efficient CPU/GPU data crunching machine 
> > perspective might shade a different light on the requirements and use 
> > cases. 
> > 
> > 
> > I'd be happy to learn more, and have a constructive discussion on the 
> > subject.
> > 
> > 
> > Thank you,
> > Max.
> >  
> > 
> > -- 
> > puıɯ ʎɯ ɯoɹɟ ʇuǝs
> > _______________________________________________
> > swift-evolution mailing list
> > swift-evolution at swift.org 
> > <https://lists.swift.org/mailman/listinfo/swift-evolution>
> > https://lists.swift.org/mailman/listinfo/swift-evolution 
> > <https://lists.swift.org/mailman/listinfo/swift-evolution>
> 
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: 
> <https://lists.swift.org/pipermail/swift-evolution/attachments/20171028/d1ff89d1/attachment.html
>  
> <https://lists.swift.org/pipermail/swift-evolution/attachments/20171028/d1ff89d1/attachment.html>>


_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to