<p>Hi everyone,</p>
<p>I have a random question that I've been thinking about during my time learning Golang: </p>
<p><em>Why do I see so *</em>few** companies using Golang?*</p>
<p>I'm currently at a meetup in London, where a financial company is showing us their stack.</p>
<p>It's not my first time being at meetups where companies that have concurrency and distributed systems at its core show me their stack. But I can't remember a single time where a company had Golang at its core. </p>
<p>What am I missing here? Isn't Golang built for stable, distributed systems?</p>
<p>I've only been doing Golang programming a few weeks now, and I go to a few meetups / week. But I rarely see any mention about Go.</p>
<p>What am I missing?</p>
<p>Edit: Formatting...</p>
<hr/>**评论:**<br/><br/>longtimedockhand: <pre><blockquote>
<p>What am I missing?</p>
</blockquote>
<p>Most popular languages are 20+ years old and Go is 8 years old?</p></pre>Kimput: <pre><p>That still doesn't explain why so few companies seem to skip the language now. The startup scene is huge here, and even when startup companies show up they are all coding in Node or Python.</p></pre>aldto: <pre><p>Python is 26 years old, so I'm not sure what you are trying to argue.</p></pre>Kimput: <pre><p>God. Why are so many of you so hostile?! What can I possibly have said that makes you believe I'm trying to argue something...? </p>
<p>I'm not trying to <em>argue</em> anything. I'm trying to <em>understand</em> something that genuinely confuses me.</p></pre>jackmott2: <pre><p>You seem to think that Go is obviously better than Python/Node/Java/F#/C#/Ruby etc.</p>
<p>Can you explain why you think that?</p></pre>Kimput: <pre><p>I think the fact that it's built around concurrency makes it a more obvious candidate than say Node. The fact that you dont need licenses make it stronger than the .net stack for instance.</p>
<p>Not sure if I think it's necessarily stronger on all fronts. But that's why I'm reaching out to the community..</p></pre>UnscheduledArrival: <pre><p>What licenses do you need for the .net stack? I don't know about Node, but you can do concurrency in .net pretty easy. Python is also capable of async.</p>
<p>Go being so much younger than Python/.NET/Java make it less desirable for companies because its hard to find devs that have experience with it.</p></pre>cbll: <pre><blockquote>
<p>Go being so much younger than Python/.NET/Java make it less desirable for companies because its hard to find devs that have experience with it.</p>
</blockquote>
<p>That's a vicious circle, though.</p>
<p>Having that said I am seeing some major companies starting to ask for Go in job ads in my country. It's mostly for DevOps/SRE positions, though. </p></pre>defunkydrummer: <pre><blockquote>
<p>I think the fact that it's built around concurrency </p>
</blockquote>
<p>Erlang</p>
<p>Elixir</p>
<p>Lisp-Flavored Erlang</p>
<p>even java had concurrency considerations from the start</p></pre>jackmott2: <pre><p>Well everything is better than node if you ignore the ubiquity, but ubiquity is important and real and has feedback loops.</p>
<p>You can build things in .NET without paying for any licenses. C# and F# are both free and open source. I have an F# web app in production, zero things had to be paid for.</p>
<p>A lot of companies focus on what tech will let them get a product to market quickest as the first order parameter to optimize. Go being about as low level as GC languages go, may seem suboptimal to many. That may not be accurate but that will be the perception sometimes. The concurrency features are nice but it isn't totally unique in that way.</p>
<p>The things <em>I</em> like about Go are the self contained, aot compiled, native executables, low latency GC, and that pointers are not hidden from you.</p>
<p>But for code that is going to run on a server those things offer no substantial advantage usually.</p></pre>aldto: <pre><p>I apologize if it sounded like I was attacking you. That was not my intent.</p>
<p>I think a lot of us feel that Go has a very healthy base right now for its age, and it will just get better with time. This is from experience. (I went to college in the '80s, well before C++ was mainstream).</p>
<p>JetBrains recently released its GoLand editor. AWS recently announced Go support in Lambda. This will result in more programmers seeing Go as a viable option for their projects, which will in turn lead to more tools being built for Go. It's a cycle. I assume that there were enough programmers asking for these products from JetBrains and AWS to make it worth their investments. The Go language is being used, maybe just not in your circles.</p>
<p>This has been going on with Python for 26 years. And with JavaScript for 22 years. (Node.js is not a language, it's just part of the cycle for JavaScript that I'm describing).</p>
<p>Eventually, Go will be a language that has just always existed in the minds of young programmers (and a much better language than it is now), with a strong infrastructure supporting it.</p>
<p>Finally, to answer your question, the companies that you have been looking at probably feel that they can get the project completed WITH THE LEAST RISK in Python or Node.js because that is what they are most comfortable with at this time. There is a whole lot to do when starting a startup, so the last thing you want is to battle the quirks of an unfamiliar language.</p></pre>weberc2: <pre><p>A lot of times it's about what is already well-established in your company or industry. For example, if your company is doing data science and machine learning, there's a good chance that everyone is already familiar with the Python data science stack. Also, many people have a "get off my lawn!" attitude toward new languages in general. I haven't been able to get anyone in our company to <em>look</em> at Go over Python, despite Python failing us miserably (performance, deployment complexity) and Go being ideal for our use case (fast, compiled, simple deployment, easy to use, easy to learn). No one has given any remotely compelling reasons not to switch; I think mostly no one takes it seriously, probably assuming that any new language must take months to learn.</p></pre>joncalhoun: <pre><p>When starting a startup your goal isn't to write insanely scalable code or to write the best version of your app - you get to that later. Your goal is to iterate quickly and prove that your business model works. As a result, most founders use a language they are already familiar with - this is faster than learning a new language - and most founders won't already know Go because it is still fairly new. </p>
<p>Old companies don't use go for new projects often for simply reasons - why learn something new and retrain your team when they know how to build stuff in another language and have been doing it successfully for a while? Why bother with the risk? For it to make sense you need a big reward. </p>
<p>As Go grows that reward will grow. It will be easier to hire devs who want to work with Go, and the number of devs in that category is rising. As more projects in Go succeed it may become clear that the initial cost of learning the language is outweighed but reduced maintenance or something else. </p>
<p>Go also has less resources online than say python, making training harder. </p>
<p>All of these get fixed in time, which is why age matters..</p>
<p>Ps- I'm on my phone so forgive any typos.</p></pre>jackmott2: <pre><p>why are so many in Java?
who knows why trends happen.</p></pre>Kimput: <pre><p>Probably because it was available like 20+ years ago. As for modern apps, because there is a broad community for it now.</p>
<p>Still baffles me that few companies I meet mention Go. </p></pre>jackmott2: <pre><p>Well there are lots of fascinating things to choose from now. Why should Go be a favorite for companies?</p>
<p>The things I like about Go would have no relevance for most business purposes. But Go has been growing very fast according to some measure so maybe in 5 more years you will see it more often.</p></pre>Kimput: <pre><p>Would you mind elaborating? </p>
<p>I'm genuinely curious, as I mentioned I'm still new to the language and I don't understand why, for instance, a startup doing something like a chat application (or something similar) would go for Node instead of Go.</p></pre>jackmott2: <pre><p>Well I know why people go for Node: because there are tons of javascript developers to hire , and because everything is all in one language if the client is in javascript, which can be convenient, and since Electron is perceived to be the easiest way to develop cross platform desktop apps, we get node.</p>
<p>I think this situation is sub-optimal but I understand why it is happening.</p></pre>Kimput: <pre><p>Yeah. I get that. I suppose I could have said Python instead. :p</p>
<p>But you do understand what I mean? :/</p></pre>jackmott2: <pre><p>Python people just LIKE it, I don't know why. =)</p></pre>diabetesjones: <pre><p>I think a lot of apps are being re-written with parts of it in Go, rather than the full stack. It's inexpensive to take your bottleneck, rewrite it in Go, deploy it in the original's stead, and see increased throughput and decreased bandwidth costs. Gradually refactor your app in to Go rather than all at once. It takes time to get popular. I started with Go about two months ago as well and notice it's an outlier here in Vancouver. </p>
<p>At Etherparty, we're re-writing our Node app in Go. It's about one third the lines the code, much faster, and works directly with Ethereum Go bindings for Solidity contracts. This is about as good as it gets right now for blockchain programming, so it makes sense for us. As much as I love Go, if I was going to make a traditional website / CRUD app for a client, I'd probably use Laravel and PHP because it could be done in hours and everyone knows PHP. Kind of perpetuates the problem, though.</p></pre>dark_magician2: <pre><p>To do blockchain stuff you should start learning Haskell :) Plutus is going to almost certainly replace Solidity and Plutus is basically a form of Haskell</p></pre>diabetesjones: <pre><p>I would love to! I've seen Cardano's docs on Plutus and it seems great, and a much better language than Solidity for contracts. Hopefully Cardano can get some actual content out, they seem to be large on ideas for such a valuation. Solidity may be a bit odd of a language for it's job, but it works and is proven, as is Eth's blockchain...</p></pre>dark_magician2: <pre><p>The valuation makes sense when you see some of the more out of the limelight stuff they've put out :) They're going to be backwards compatible with ERC20 tokens and Ethereum contracts, you'll be able to run your Ethereum stuff on the Cardano network. Ethereum just has absolutely horrible software engineering principles if its trying to build infrastructure to build trillions of dollars of financial systems on. In fact the Ethereum foundation never Formally Verified the EVM, IOHK, the company making Cardano had to pay for <a href="https://www.coinspeaker.com/2017/08/01/iohk-funded-uiuc-project-produces-first-complete-formal-semantics-ethereum-virtual-machine/" rel="nofollow">https://www.coinspeaker.com/2017/08/01/iohk-funded-uiuc-project-produces-first-complete-formal-semantics-ethereum-virtual-machine/</a></p>
<p>Also you're going to love this, Cardano created it's own Virtual Machine, IELE, that is objectively way better than Ethereums :D <a href="https://runtimeverification.com/blog/?p=498" rel="nofollow">https://runtimeverification.com/blog/?p=498</a></p></pre>diabetesjones: <pre><p>Yeah I've seen a bunch of that stuff. The valuation still doesn't make sense. A bunch of ideas and hypotheticals are worth literally billions now? That's trading logic, not programming. Cardano sold a gigantic percentage of their tokens to private presale investors for $0.0024 per token. </p>
<p>If Cardano releases a popular, great product - I would love to make contracts for it as well. But it is all very far away, and I work professionaly with blockchain NOW. I create and deploy smart contracts every day. So I have very little focus on Cardano at the moment. It seems to be more of interest for traders rather than programmers. I could see moving towards NEO before Cardano because the product is actually there. A bird in the hand is worth two in the bush : ) </p>
<p>That said, best of luck to Cardano. They have lofty goals. I hope they reach them! </p></pre>anacrolix: <pre><p>It only excels at a handful of things that aren't the core product for the majority of startups. In particular things it's crap at are: scientific computation, analytics, front end web, gluing together off the shelf solutions, scripting, for example. Most startups shit out a website, Go's too low level to be quick at that. Source: me, trying to do all of the above.</p></pre>wfpoulet: <pre><p>I like Go (although in my opinion it is critically missing immutable function parameters passed by reference), but I believe it is lacking a driver or a unique selling point to help it become mainstream.</p>
<ul>
<li><p>FORTRAN and COBOL were first.</p></li>
<li><p>BASIC had the home computer.</p></li>
<li><p>C had UNIX.</p></li>
<li><p>C++ had C compatibility.</p></li>
<li><p>Turbo Pascal had RAD.</p></li>
<li><p>Java had a GC.</p></li>
<li><p>C# had Microsoft Windows.</p></li>
<li><p>JavaScript had the Web Browser.</p></li>
<li><p>Go has or will have ... what ?</p></li>
</ul>
<p>After all, many technically-good programming languages never succeeded.</p></pre>ImreSamu: <pre><p>From a new research[1]
"Which languages are developers planning to learn next?"</p>
<h1>1. GO - 37.8%</h1>
<p>it is interesting
GO is prefered "45 to 54 year old".</p>
<p>[1] <a href="https://research.hackerrank.com/developer-skills/2018/#insight4" rel="nofollow">https://research.hackerrank.com/developer-skills/2018/#insight4</a></p></pre>scalapar: <pre><p><strong>Developers are learning the languages employers are looking for most</strong></p>
<p><strong>Go 6.9%</strong></p>
<p><a href="https://research.hackerrank.com/developer-skills/2018/#insight2" rel="nofollow">https://research.hackerrank.com/developer-skills/2018/#insight2</a></p></pre>SteevR: <pre><p>The backend infrastructure of many companies, especially financial sector, is going to be 15-30 years old. Stuff you'll see in similar presentations 20 years from now might have started development two years ago, but its going to be a long time before you start seeing components written originally in Go in stacks like that. In 5-10 year timeframe, you might start seeing replacement components that were rewritten in Go to replace technologies that are no longer supported today, such as .NET.</p>
<p>20 years ago, I was in your shoes with python- why don't I see it everywhere, its great! Then I started working, and business stacks in 2001 looked something like... a screen scraping Delphi GUI talking to some weird billing/shipping/business process backend written in Clipper over a virtual serial port.</p></pre>MethylMercury: <pre><p>I suggested using Go at work. My coworkers opposed it because Go lacks things like try/catch, classes, generics, a preeminent package manager, and stuff like that. Then a handful of others start raging about how much Java sucks. Then they praise their functional messiah Haskell or something, and rant about Go not being a functional language. Then the whole affair quickly devolves into chaotic bickering about any language you dare to mention. Nothing gets done and we just end up writing more shit in Node.js. sighhhh</p></pre>cbll: <pre><blockquote>
<p>Nothing gets done and we just end up writing more shit in Node.js.</p>
</blockquote>
<p>Most arguments you can make are invalid to me if you default to writing server-sided Javascript instead of, well, thinking about something else than writing server-sided Javascript. </p></pre>dlsniper: <pre><p>You should probably be at the Go meetup in London if you want to see companies talking about Go <a href="https://www.meetup.com/Go-London-User-Group" rel="nofollow">https://www.meetup.com/Go-London-User-Group</a></p>
<p>Also, keep in mind that London is focused mostly on old, boring, financial tech, and just a few companies endeavor in using it, Monzo being a good example of Go usd in a bank.</p></pre>Kimput: <pre><p>Yeah, I'm going to the next. Was too late to get a spot at the last... :(</p></pre>: <pre><p>[deleted]</p></pre>Kimput: <pre><p>Ah, you missunderstand me. I'm not riding the hype train, as there is no hype surrounding Go here. I'm more curious as to why there is no hype.</p>
<p>I love the language and want to understand why so few people seem to opt out of using it...</p></pre>dgryski: <pre><p>Also, <a href="https://github.com/golang/go/wiki/GoUsers" rel="nofollow">https://github.com/golang/go/wiki/GoUsers</a></p></pre>defunkydrummer: <pre><blockquote>
<p>I have a random question that I've been thinking about during my time learning Golang:
Why do I see so <em>few</em>* companies using Golang?*</p>
</blockquote>
<p>If the company has already codebase in Java/C#, there is no sensible advantage in going to Golang.</p>
<p>If the codebase is in Cobol, it will stay in cobol until 2199 approximately.</p>
<p>Golang is a very niche product: not so fast (compared to other statically-typed languages and compared to some languages with GC), type system is limited and unflexible (compared to many mainstream languages), lacks some things considered essential to business system development (elegant error management, for example), and there are many concurrent/multiprograming facilites available for other languages.</p>
<p>It's more of a niche player for concurrent programming, but even there, Erlang and family (Elixir/LFE) arrived first to the party.</p></pre>ohaiya: <pre><p>Everything goes through an S-Curve and go hasn’t hit its exponential growth part of the curve yet, but it’s certainly feeling a lot closer than a couple of years ago.</p>
<p>Another 3-4 years and I think the use of Go in professional development (as opposed to professional curiosity) will be exploding.</p></pre>shovelpost: <pre><p>Go is a language designed to be pleasing for developers (at least the ones working at Google). Employers tend to stick to industry standards in order to minimize risk and to be able to easier acquire external projects from bigger companies.</p>
<p>Also generally, employers don't care about what developers find pleasing. They just want the job done with a press of a button if possible. The only way to convince them is by offering them the promise of that magic button. Thus <a href="https://github.com/golang/go/wiki/SuccessStories" rel="nofollow">success stories</a> and articles like <a href="https://blog.iron.io/how-we-went-from-30-servers-to-2-go/" rel="nofollow">How We Went from 30 Servers to 2: Go</a> are important.</p></pre>defunkydrummer: <pre><blockquote>
<p>The only way to convince them is by offering them the promise of that magic button. Thus success stories and articles like How We Went from 30 Servers to 2: Go are important.</p>
</blockquote>
<p>That story is about how a backend in Ruby went faster with Go. Ruby is the slowest of the mainstream languages (with the MRI implementation), even JRuby is still slow to many other dynamically typed languages. </p>
<p>Can't see how this particular story can be convincing.</p></pre>
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码`
- 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传