Go is a great language, but it seems terribly suited to data science. The popular data science languages are Python, R, Julia, and to a lesser extent Scala. They’re all extremely flexible languages, where you can easily write high level abstractions/DSLs, and they all have very strong functional programming support, because data science tends to be extremely functional. They also tend to be very concise languages.<p>Go is at the complete opposite end of the spectrum - not flexible at all, it’s purposefully difficult and awkward to write high level abstractions/DSLs, there’s very poor functional programming support, and it’s very verbose. There are great reasons for these restrictions, they’re intentional design decisions, but they also make it a very poor fit for data science IMO.
The first things I would look for in a data science language are multidimensional arrays, linear algebra packages, data frame and time series libraries ... none of which feature on this page.
I write a lot of Go, and I spend most of my time doing analysis (usually in R, occasionally in python). I'm interested to understand whether there was a specific motivating example that drove the creation of this new go-like language.<p>This is Hacker News, so there definitely doesn't need to be anything beyond "I could, so I did." But if this actually solves some problem better than existing solutions, it would be cool to read about. <i>Edit</i>: Without a motivating example, it's hard to imagine that people will want to pickup a Go-like (but not exactly Go) language for data science.
Go has a ton of potential in the data science space.<p>A basic DataFrame library would go a long way. Doesn't have to be as full featured as Pandas. Just something that's maintainable and portable.<p>I wrote a blog post a few months ago on the current Go DataFrame libraries (gota, qframe, dataframe-go): <a href="https://mungingdata.com/go/dataframes-gota-qframe/" rel="nofollow">https://mungingdata.com/go/dataframes-gota-qframe/</a>. None of the current offerings are integrated with Arrow.<p>An Arrow-backed Go DataFrame library that can read / write Parquet files could really jumpstart data science in Go (really data engineering in Go, which is where they should probably focus first).
The env gop run shebang line is not posix-compliant; posix only requires support for a single argument in the shebang and this one has two arguments (gop run).<p></irrelevant unix nerd mumbling>
I used to do a lot of machine learning code in go and think it has great potential as a compiled, static language with similar ease of development to python.<p>However it is hard to get around the lack of operator overloading and (to a lesser extent at least to me) generics. I love the simplicity of the language and understand their feeling that operator overriding is too often abused but at the same time not being able to use algebraic operators for matrix and tensor libraries makes them really hard to use.<p>The compacting garbage collector can also make it hard to pass pointers to memory to non go libraries which is key in data science.<p>If this project could address those things I think it could have real potential
Why can't you just build libraries to make Go a better language for data science? There's already Go support for a Jupyter Notebooks kernel: <a href="https://github.com/gopherdata/gophernotes" rel="nofollow">https://github.com/gopherdata/gophernotes</a>
I just barely picked up Go, and my first impression is that it's very... opinionated.<p>It wants me to do if/else guards a certain way, you have to capitalize first letters of "exported" functions, it won't let me import `fmt` unless I use it, etc. I'm not sure I like it.
Nobody in data science wants fragmentation. Therefore, any aspiring new platform would need to bring some serious benefits to the table. I'm not sure what they are here.
I wish them all the best in this but it seems like an uphill battle, and doesn't seem to have a clear use case to me. For lightweight to medium projects R and Python are so well supported it's hard to reject them as the null. If you're doing exploratory stuff and want visuals, it's the same story with Rmd and Jupyter. For more behind-the-scenes production pipeline stuff there is already Scala which has inroads with Spark. If you really want to use something new, Julia is starting to mature and has all sort of plotting and linear algebra support. To me it seems Go would aim more to compete with Scala I suppose? I suppose then it might come down to plotting.<p>In terms of being a general-purpose DS language, I can't imagine using anything that doesn't have a clear strategy to A) get a dataset into a DataFrame or similar, B) get my collaborators a plot in a way that is quick and easy, and C) a lesser extent, some kind of notebook/reporting tool.<p>They do say there is a lot of development going on but it seems like a space with a lot of great incumbents and a rapidly maturing up-and-comer in Julia.<p>edit: typo
Seems like there's a potential trademark risk if Google decides it wants to protect the Go trademark.<p><a href="https://news.ycombinator.com/item?id=20023137" rel="nofollow">https://news.ycombinator.com/item?id=20023137</a>
There are a lot of numerical structures missing from this. Not sure if you can really advertise it as for data science without some kind of dataframe structure.
Agree with all the comments like "where are the nd arrays?"<p>BUT, they have list comprehensions!! One of the main things I miss coming from Python.