13 ms·
Google creating a new language? To shut it down in 3 years? Swift will be around in 15 years. It would be Microsofts F#, or Googles Dart all over again. It's a
by danielscrubs 7y ago
Google creating a new language? To shut it down in 3 years? Swift will be around in 15 years. It would be Microsofts F#, or Googles Dart all over again. It's a monumental task to create a language that people want to use, and an even bigger task to create tools around it (IDEs, language-specifications, cross platform frameworks, package management).
I know this is a hot take but... I doubt Google has the capability to be frank. They created Dart and Go (a.k.a generics ain't necessary). They created Tensorflow 1 which is totally different from Tensorflow 2.
Swift may not be the best but Swift is starting to become such a large part of Apple so it will have backing no matter the internal politics.
The language is not where the battle will be, it will be the tooling.
- yahyaheee 7y agoI would disagree, first Go has been tremendously successful and yes will have generics soon. The ML community really needs a better language than Python, the current alternatives (Julia, Nim, R) are alright but seem to miss the mark in this arena. I see few data scientists excited about Swift, its too heavy handed and deeply embedded in the Apple iOS community. People are searching for a better language in this space and it's something that often needs a corporate backing. Google is aware of this problem and hired Chris Latner to fix it, its just a bit of unfortunate oversight, I guess we'll keep using Python for now.
- girvo 7y agoJulia is I think perhaps more focused on ML and data analysis, but Nim has some neat tricks up it's sleeves too: https://github.com/mratsim/Arraymancer https://github.com/mratsim/Arraymancer
- yahyaheee 7y agoI like Nim quite a bit, I would put it and Julia as the best contenders at the moment.
- gtycomb 7y agoNim is a languge that has good performance and I had good experience porting an enterprise Python application to Nim (for performance gain). For a new user the risk obviously is the newness of Nim but the Nim team was very helpful and prompt whenever I posted a question. Its a very complete and surprisingly issue-less language. Hopefully Arraymancer will help increase its reach, I wish the implementors all the best.
- Alex3917 7y ago> I see few data scientists excited about Swift, its too heavy handed and deeply embedded in the Apple iOS community. Which is unfortunate, because it would probably be the best language if it were controlled by a non-profit foundation like Python. As it stands it's basically unusable.
- lostmsu 7y agoWhy do you think Swift would be the best language? I am doing a lot of C#, and so far have not seen anything in Swift, that would make it feel better. In fact, at this moment even Java is doing leaps forward, so will quickly catch up on syntax. And C# and Java have a benefit of JIT VM by default, meaning you only build once for all platforms, unless you need AOT for whatever rare reason (which they also have).
- danielscrubs 7y agoI'd say the culture is very, very different. Java/C#-heads are in love with OOP and create layers on layers everywhere, hiding as much state and methods as they can (you can't use this operator, you'll shoot yourself in the foot!) and rarely doing pure functions. It's just a long way from how math works. Not saying it wouldn't work, it definitely would, but I think I'd rather switch profession than deal with Maven and Eclipse in 2020. Swift culture is more about having non-mutable structs that in turn is extended via extensions and heavy use of copy on write when mutable structs are needed. It's a small difference but it's there.
- lostmsu 7y agoI fail to see how culture is related to the language. You have a weird notion of mutable by default in either Java or .NET. The former is notorious for builder patter because of that exact reason. Does Swift have special syntax for copy + update like F#: { someStruct with X = 10 }? Never had problems with Maven. How is Swift different? People have not been using Eclipse much for a while. There is IntelliJ IDEA for Java and Resharper for C#.
- freedomben 7y agoWhat is deficient about Julia? I've been heavily tempted to try it out but if there are problems I may invest my previous time elsewhere.
- yahyaheee 7y agoEh wrote it for a couple years my tldr; multiple dispatch is odd, types are too shallow, jit is really slow to boot, the tooling is poor.
- UncleOxidant 7y agoI found multiple dispatch to be odd at first, but after adapting my mindset a bit I really like it. It makes it really easy to just drop your functions specialized for your types into existing libraries, for example. It's a win for code reuse. What do you mean by "types are too shallow"? Yes, jit can be slow to boot, but I think this is an area they're going to be focusing on. "the tooling is poor" Not sure I agree here. I think it's great that I can easily see various stages from LLVM IR to x86 asm of a function if I want to.
- celrod 7y agoI've a lot more experience with Julia than any other language (and am a huge fan/am heavily invested). My #2 is R, which has a much more basic type system than Julia. So -- as I don't have experience with languages with much richer type systems like Rust or Haskell -- it's hard to imagine what's missing, or conceive of tools other than a hammer. Mind elaborating (or pointing me to a post or article explaining the point)?
- eigenspace 7y agoWhat version did you last use? Boot times still aren't ideal, but I find it takes about .1 seconds to launch a julia repl now. First time to plot is still a bit painful due to JIT overhead, but that's coming down very aggressively (there will be a big improvement in 1.5, the next release with differential compilation levels for different modules), and we now have PackageCompiler.jl for bundling packages into your Sysimage so they don't need to be recompiled every time to you reboot julia. I also think the tooling is quite strong, we have ana amazingly powerful type system and I would classify discovering multiple dispatch as a religious experience.
- kyllo 7y agoI don't know that the ML community necessarily _needs_ a better language than Python for scripting ML model training. Python is decent for scripting, a lot of people are pretty happy with it. Model training scripts are pretty short anyway, so whatever language you write it in, it's just a few function calls. Most of the work is in cleaning and feature engineering the data up front. Perhaps a more interesting question is whether the ML community needs a better language than C++ for _implementing_ ML packages. TensorFlow, PyTorch, CNTK, ONNX, all this stuff is implemented in C++ with Python bindings and wrappers. If there was a better language for implementing the learning routines, could it help narrow the divide between the software engineers who build the tools, and the data scientists who use them?
- yahyaheee 7y agoCan you get things done in python/c++ sure, but the two language problem is a well known issue, and python has a number of problems. People certainly want a better option, and google investing as much as they did validates that notion.
- deleted 7y ago[deleted]
- kyllo 7y agoYes, so to me, the key question is not whether Swift can replace Python's role, but whether it can replace C++'s role, and thereby also making Python's role unnecessary and solving the two-language problem in the process.
- pacala 7y agoI've been recently wondering why something like Javascript/Typescript could not grow into the role. * Ubiquitous. * Not owned by a single corporation. * Fairly performant runtime characteristics, with multiple implementations. * Optional typing for quick explorations. * Quite pleasant to use in its 2020 incarnation. * The community has a proven process, tooling and track record of incrementally improving a language and its ecosystem. Please don't shoot, I'm interested in constructive criticism.
- gtycomb 7y agoIn addition to your list here, I am drawn by ES6 on the backend. This is not javascript of the early days. On Differentiable Programming, you might be aware of a tensorflow counterpart in javascript: https://www.tensorflow.org/js https://www.tensorflow.org/js I tested this to a certain extent and its not a toy. Its well thought out product from a very talented team, and has the ease of coding that we love about javascript. It can run on browsers! This being said, we should note the strengths of a statically compiled language with the ease of installation and deployment like with Go, Rust, Nim, etc. in enterprise scale numerical computing.
- goatlover 7y agoBecause JS wasn't designed for scientific computing like R and Julia are. Best case scenario is that you reimplement all the libraries Python has, but then you're just replacing Python with another generic scripting language instead of a language built for that purpose. Why would data scientists bother switching to JS when Python already has those libraries, and Julia and R have better numeric and data analysis support baked in? And if Python, Julia and R don't cut it, then there's no reason to think another scripting language would. Instead you'd be looking at a statically typed and compile language with excellent support for parallelism.
- MiroF 7y agoI have similar thoughts. I think that Typescript could allow for a lot of the "bolt-on" type checking that I find appealing with static languages and most of these are just interfaces to the same C/C++ framework, so no reason you couldn't create typescript bindings..
- johndubchak 7y agoI have to agree. Google suffers from a really bad case of ADHD when it comes to creating anything for consumption by outside developers...there is a long list and Dart and GWT are just two that stand out because there are large codebases out there that suffered because of these decisions. Frankly, I'm surprised that Go has made it this far - I mean, it's a great language, I get it, but Google is fickle when it comes to things like this.
- andrewprock 7y agoIf you know that Go was designed as a migration path away from Python, it's a bit easier to understand why it's gotten so much support from Google.
- SaxonRobber 7y agoGo succeeded because it was largely ignored by Google. Dart was the darling language which flipped miserably and has only recently became relevant.
- pjmlp 7y agoDart's relevancy is heavily dependent on Flutter's success. Seeing how Chrome team pushes for PWAs, Android team woke up and is now delivering JetPack Composer, and we still don't know what is going to happen with Fuchsia, the question remains.
- gundmc 7y agoWhat makes you think Dart and Go have been unsuccessful? Both are relatively young languages with rapidly growing adoption. Dart was on a downward trend but has seen a rejuvenation in the last few years thanks to flutter.
- earthboundkid 7y agoI was looking into Dart the other day because I guess Google is insisting on using it for Flutter and… it's someone in 2011's idea of a better JavaScript, except it's worse than modern ES2020 JavaScript? Why would anyone prefer Dart to modern JS/TypeScript? It's just not as good.
- gundmc 7y agoDart has gotten better, but agreed that the overall developer experience with TypeScript is far ahead - especially with vscode.
- earthboundkid 7y agoI just was looking at their code samples on the website, and I was really unimpressed with it. Why learn a new language if there’s nothing distinctive or better about it, you know? It’s just a better ES5 and a worse TypeScript.
- pjmlp 7y agoOnly if you need to ship something with Flutter, the last attempt to rescue Dart. However it still remains to be seen how long they will fund the team. Chrome team cares about PWAs and Android team about JetPack Composer, and eventually having it compatible with Kotlin/Native (for iOS). So it is still a big question mark why bother with Flutter, specially when it still lacks several usable production ready plugins for native features.