One last bit of perspective here, which may be relevant to your project?

I've found that Go has the lowest cognitive load "switching" load. I have a 
job that mostly doesn't involve coding. When I get to code, I have a 
limited window in which I can jump in and make changes. Amongst the 
languages I've worked with, which includes Ruby, Python, Java, Bash, and 
C++, Go is the clear winner. By which I mean, the time it takes me to 
switch back to writing Go code and start making effective changes is 
shorter than it is with any other language I've mentioned.

With languages like Python and Ruby, I've found switching costs to be very 
high. The lack of compile time type-information means it is difficult to 
determine what the "type" of a parameter to a function, or the result of a 
method might be. You have to go and look at other chunks of code to figure 
that out, and that can be costly. Also, the use of exceptions means that 
there are always invisible control flows that are hard to remember / see 
when switching back to code.

With Java, the class hierarchy, the distinctions between public, private, 
protected, and package level accessibility all add complexity that some 
part of my brain needs to recall / rediscover before I can be confident of 
the correctness of a change.

C++ is even more complex than Java. Mental switching costs are even higher.

If your project is one that involves only short windows of opportunity to 
work on code, while mostly focusing on other tasks - like analyzing your 
data - then Go might be an enormous benefit. If your project is structured 
more like an ordinary software development project, with focused developers 
who can work on the project for four to seven hours a day, this aspect of 
Go won't matter.

Eric.


On Wednesday, December 6, 2017 at 1:56:01 AM UTC-8, Christophe Meessen 
wrote:
>
> Hello, 
>
> I'm a computer scientist in charge of developing an image processing 
> pipeline for telescope images. 
> It will also have a web server and DB connection.
>
> The project is going through reviews by external experts, and the problem 
> I'm facing is that my proposal to use Go is about to be rejected. 
>
> The main opposing arguments are 
> - everybody uses python in astrophysics
> - it is very easy to find someone who knows python
> - risk that I, sole Go programmer, might become unavailable
>
> I would have the same arguments if I was project leader and unfamiliar 
> with Go. 
>
> The counter arguments I found so far are that
> - Go is simpler and safer than Python
> - I learned Go in a week-end
>
> The problem is that they don't convince people who don't know Go, are not 
> experienced software developers, and don't want to do the due diligence. 
> It's the usual inertia to change.  
>
> What other arguments could I use ?
>
> Do you know other significant scientific experiments that have adopted Go 
> ? 
>
>
>
> I have found this github project. 
> https://github.com/indigo-astronomy/indigo
> INDI is a well known Python Observatory Control System. 
> INDIGO is its translation into Go. 
>
> I have also found SciPipe https://github.com/scipipe.
> It is a Go pipeline framework used in scientific applications. 
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to