Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Go isn't designed to feel mature, it's designed to be boring and effective. It's designed to keep code complexity low even as the complexity of problems and solutions increases. It's designed to allow large teams of medium-skill programmers to consistently produce safe and effective solutions. The most precise description ive heard to date is: "Go is a get shit done language."


C# 1.0 was also boring and effective - modern versions are still effective, and I'd say they are more powerful.

Golang in 15 years will likely converge and embrace many of the missing features of mature languages (its happening now already), especially if it wants to reach broader adoption.

A reference like "Go is a get shit done language." very much reflects overall immaturity of the language that I see day to day.


>Golang in 15 years will likely converge and embrace many of the missing features of mature languages (its happening now already), especially if it wants to reach broader adoption.

Go is 10 years old already and picking new features at an extremely low rate, with no hints at a pace change.

I think error management and generics should be the only major changes to expect within the next 5 years. C# is more complex by an order of magnitude... And thus its evolution was and is still way faster.


Basically it is designed for writing boilerplate libraries and code generators to cover up lack of language features, which even well known projects are forced to make use of (k8s).

I bet a G2EE variant isn't too far away.


It is already there in some form as 'Go Cloud Development Kit' [1]. Though many claim it is not really enterprise scale until a petstore application can be created in it. And a flawless implementation of EJB 2.1 made enterprise fall in love J2EE. I am not sure Go can deliver anything remotely powerful as that.

1. https://gocloud.dev/


Yet in the infrastructure side, it's much more used than c#. Go figure.


You again.

What infrastructure, those riding the consulting and conference Docker and K8s 2019 wave fad?!?


Right now I'm using prometheus and grafana to monitor around 8k database servers (sql server too BTW). We have pricing applications using influxdb. Docker. Openstack. Minio. We also have mattermost.

All of this in a conservative big bank. My friends in the banking sector tell the same story.

True there are lots of c# enterprisey web apps.

However given the amount of boilerplate you describe, I cannot understand how such useful and reliable tools can be delivered in Go.

A hint:just because a language is not to your liking, it does not mean that it is not useful, performant and reliable.


"However given the amount of boilerplate you describe, I cannot understand how such useful and reliable tools can be delivered in Go."

I don't follow your logic. Multitudes of useful and reliable tools were built with assembly languages - is that evidence that assembly code doesn't have a lot of boilerplate (relative to modern languages)?


One anecdote doesn't make the IT industry.


I'm talking about the whole banking sector in France.


And yet I haven't seen any of that on our Fortune 500 French clients, which naturally includes banks, go figure.


Are you working in operations and infrastructure? My take is that writing enterprisey applications you are not exposed to those tools. I'm in ops.


Not personally, but we do have mixed teams.

AWS, Azure, actual hardware racks, plain old VMs, JEE containers, .NET packages, Ansible, Puppet, Chef, whatever scripting stack, but surely not one line of Go related code.


As someone that is neither a C# or Go programmer, I would be very surprised if that's true.


Here's a list of prominent Go infrastructure projects and by no means a complete list: Kubernetes, Docker, Etcd, Consul (and the rest of Hashicorp's projects), CockroachDB, Prometheus, TiDB. Maybe I'm just blind to C# but I don't remember coming across a single similar project that's written in C#.


Azure, Orleans, ASP.NET, Windows,SQL Server, Bing, IIS, Kestrel,...

Yep, they aren't pure C#, still way more relevant to the world IT infrastructure than anything Go.


None of this is relevent and or even close to be as popular as the previous tools mention in Go, just k8s and Docker crush your entire list. Another very popular one is Grafana also written in Go.


In what? Only if we are talking about Github stars or Silicon Valley coffee shops.

Fortune 500 prefer to care about actual delivered business value.


I worked in two F500 compagnies both are using k8s, Docker / grafana and Go. They also use C# but not in the cloud / operations / infra world.

Go talk to some SRE team in F100 and F500 and ask them what they think about C# infra side lol.

The fact that C# was running on Windows only until 2 years ago explains why.


I only work for Fortune 500s, on project scale where license costs are a tiny drop regarding overall project costs.

Plenty them do run production servers on Windows.

You forgot there are 498 left to check.


That's a very distorted and interesting view of the software industry as a whole.


Sql server written in C#? Please. None of it.


Then better learn how to use it properly, specially .NET stored procedures, OLAP engine and SSMS.


You also have python and R stored procedures. Is it written in python?


Yes, the modules that make up the API surface for Python and R respectively.


I think saying 'written in X' != 'has API wrappers for X' .


In correct English one would state fully, completely written in X.

Modern stacks are seldom pure blood language X, thus if 5% of it is written in Y, the product is written in a mix of X and Y.

Which I also mentioned on my comment, "Yep, they aren't pure C#", naturally overseen when one intends to champion its language as "Year of Desktop Linux" on IT infrastructures.


Playing games with the commonly accepted meaning of words is a known sophism.

The Linux kernel is 0.2% of shell scripts, yet no one would say it's written in shell. Same for windows or sql server. .Net is marginal there.

Btw I do code in Go, but I mostly use go apps and enjoys their small memory footprint and ease of deployment.

I must not be the only one as I see go apps pretty much everywhere in ops teams.


Depends on what parts, entire products of the Sql server product line are in C#, like Sql Server Reporting Services for instance.

The core sql server rdbms engine is hosting the .net runtime for a few things - but there its maginal compared to C++.


Exact. It's marginal. Saying "written in .net" about sql server made the Microsoft PFEs laugh during our coffee break though.


Happy to be able to help going through the day in an happier mood.


> It's designed to keep code complexity low even as the complexity of problems and solutions increases.

Honestly I think that's pretty wrong. Go is designed to let you get coding quickly. It's not designed to make your ultimate solution well designed are easily refactorable. In a few years there's going to be a ton of Go code that becomes almost as bad as C where it becomes untouchable because people quickly threw something together and didn't think about long term design.


I didn’t read the thesis for each implementation, but it would have been cool to see how long it took an engineer to write each network driver. I bet the Go version, while definitely not the fastest, was one of the fastest to finish.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: