The state of Go in market and its future

agolangf · · 919 次点击    
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
<p>Inspired by <a href="https://www.reddit.com/r/golang/comments/1orz8z/the_state_of_golang_and_its_future_question/">https://www.reddit.com/r/golang/comments/1orz8z/the_state_of_golang_and_its_future_question/</a></p> <p>Hi, I am a new developer and I would like to know what do you guys think of the future of Go? I know that many of you will say it is brilliant but I&#39;d like to have some facts taken in consideration:</p> <p>1 - lots of rants about Go problems (lack of generics, the guy that after one year quite go with a very valid bunch of criticism regarding tooling, another guy saying the his goal in IT is to be away from maintaining Go code) etc etc</p> <p>2 - The fact that it seems Go community is actually less active, than say, Rust. As of the moment of this post, there are 41 active users here and 85 in Rust subreddit. </p> <p>3 - Lack of mention of Go in lasted Google I/O.</p> <p>4 - Very few job openings for Go. (Even in Who is Hiring in HN).</p> <p>So the point is, is it safe to attach my wagon to Go? Is Google, or any other big company for that matter, willing to push Go forward and improve its market share?</p> <p>Thanks</p> <hr/>**评论:**<br/><br/>BadMoonRosin: <pre><p>When I was starting out in my career, I wish that I had more perspective on how &#34;coolness&#34; maps to actual career prospects. I just sorta stumbled into a Java career path... because when I came up in the late-90&#39;s, that just happened to be BOTH the cool new &#34;hipster&#34; trend of its day AND a legit sea change in the business world as well. For newbies today, seeing a different fad on Hacker News every other month, I imagine it all must be very confusing.</p> <p>So at high level, I will tell you that worrying about &#34;choosing&#34; a programming language is only relevant in small startups. Not even all small startups, either. In more established companies, or startups who pattern themselves after established companies, there are programming languages deeply entrenched in that type of work.</p> <ul> <li><p>If you&#39;re doing systems programming, then the industry standard is C++. Various people hope for this to eventually be replaced by Go, or Rust, or D, or something else. But C++ has been the standard for 30 years, and there&#39;s little sign of that changing any time soon. Really, it&#39;s only relatively recently that C++ finally supplanted C.</p></li> <li><p>If you&#39;re writing business software, then the industry standard is Java. C# is also a standard for companies tightly coupled to Microsoft systems, and with the cross-platform expansion taking place right now perhaps C# will rival Java more strongly in the near-to-midterm future. However, today Java dwarfs everything else in the enterprise.</p></li> <li><p>If you are doing web development outside of an &#34;enterprise&#34; context, then there is a lot of fragmentation. PHP, Python, Ruby, and more recently Node.js. If you look for work in this field, then you will have to make more decisions about which language(s) to deep-dive with the furthest. However, even here it is not as bleeding-edge as the front page of Hacker News would have you think. Node.js for example has been around for 6 years now, and lots of people in forums like this are already bored with it and wanting to move on... but it&#39;s just now really STARTING to gain traction in the employer world as a career path.</p></li> </ul> <p>So if making a paycheck and starting a career is important to you, then you should primarily focus on one or more of these languages as your foundation. Some people will tell you to move to the Bay Area, or to hang a shingle and do freelance work, but you really need to build some experience first to be competitive along either of those paths anyway. </p> <p>Learn something established. It will pay your bills, and make you a more well-rounded coder with insights about the strengths (and weaknesses!) of Golang in contrast.</p> <p>As for which &#34;emerging&#34; languages to explore from there, don&#39;t worry so much about silly metrics such as who&#39;s logging into which subreddit at any particular time. Language fads on Hacker News and Reddit are <em>ridiculous</em>. Ten years ago, everything was Scala. Five years ago, Node.js was going to make the JVM irrelevant within a year or two. Three years ago, we were all learning Go. Last year, Rust became the darling. Mark my words, Elixir is going to be the next thing.</p> <p>What do all of these have in common? There are very few jobs available for any of them outside of the Bay Area, or outside of a job you create for yourself through freelance work (which is more about being a professional salesperson than being an engineer).</p> <p>I believe that Go is a strong candidate for establishing itself in the future. It cuts across all three of the industry types I bullet-pointed above, and is increasingly backed by Google (I can&#39;t remember the last time I watched a Google event in which all of the live coding demos weren&#39;t using Go).</p> <p>However, I&#39;m not so hell-bent on working with any of my side languages that I&#39;m only looking for related jobs <em>today</em>. I learn them to make me a better coder overall, and I lobby to use them for particular projects where they make sense. But it&#39;s professionally unwise (and makes you a lesser coder, also) to not have a firm foundation in some industry-standard language first.</p></pre>dhdfdh: <pre><p>This is the most well-rounded answer to a question I&#39;ve ever seen on reddit. I never expect that here.</p></pre>unicibusipsisunicior: <pre><p>It&#39;s not elixir (or not only elixir)-it&#39;s nim.</p></pre>varun06: <pre><p>This is really well said, I work for a medium sized company and we use many programming languages. In in last 1.5 years at this company I have used, Node.js, python, and currently Go. If you know one programming language learning another one is not that difficult. Also I also believe that Go is here to stay and at the same time it has its cons and pros.</p></pre>tech_tuna: <pre><p>tl;dr learn Haskell</p> <p>/kidding!</p></pre>theonlycosmonaut: <pre><p>No, seriously.</p> <p>;)</p></pre>robertmeta: <pre><ol> <li><strong>&#34;There are only two kinds of languages: the ones people complain about and the ones nobody uses.&#34;</strong> To pick just a handful of projects and companies using Go: [Projects] <em>Docker, Juju, NSQ, Cockroach, Hugo, Gogs...</em> [Companies] <em>Bit.ly, Baidu, CloudFlare, Heroku, DigitalOcean, Disqus, Dropbox, Github, New York Times, Twitch, Tumblr, Twitter...</em> These are just the tip of the iceberg. Currently in the startup community, Go isn&#39;t the #1 language, but it is probably #2 after Javascript(Node). Obviously will take many years to catch up in popularity to much older languages (legacy has roots). </li> <li>Judging a community by its Reddit popularity is an ill-advised strategy for making career decisions. Look at REAL projects shipping in Go versus Rust, this is profoundly unfair of course, Rust just hit 1.0 -- give it 3 years and see where it is at. Go is never going to be sexy, Go is pragmatism given form. Rust just hit 1.0 so activity is at a bit of a logical spike. Both are pathetic shells of C/C++/Java/Javascript/PHP/C#/Objective-C/Python/Ruby popularity. To view it from a different lens: <a href="https://libraries.io/">https://libraries.io/</a></li> <li>Go is an open source project, not a Google project. Also, Go has its own conferences, being a part of Google I/O is irrelevant (and probably belittling and negative). Gophercon this year is likely to be the last single track one cause they are getting too huge. Gophercon in 2 months, Golang UK in 3 months, GothomGo in 4 months. You could live a fairly busy life JUST going to Golang conferences. </li> <li>Go is an exceptionally easy language to learn, meaning you often don&#39;t need to bring in &#34;Go specialists&#34;, you get good general developers (probably specializing in a more challenging tech) and they can also do Go, because Go takes about a week for a novice programmer to get their head around. Additionally, generally you are posting on boards like &#34;Who is Hiring&#34; when you are having a hiring issue. I have hired for a very hard to fill role (Erlang), and we posted EVERYWHERE and it tooks MONTHS to get the right person. Hiring for Go on the other hand has been a &#34;just pick the best candidate and see if they are willing to learn Go&#34;. </li> </ol> <blockquote> <p>So the point is, is it safe to attach my wagon to Go?</p> </blockquote> <p>Go takes almost no effort to get up to speed on -- what are you &#34;hitching your wagon to&#34;? It doesn&#39;t require that level of commitment. Anyone who hitches their wagon to a single language is probably going to turn out to be a terrible developer regardless. Learn many, don&#39;t be religious about it, be pragmatic. Languages are tools, nothing more. If you only know how to use a hammer, everything will start to look like a nail. <strong>&#34;Learn at least a half dozen programming languages. Include one language that supports class abstractions (like Java or C++), one that supports functional abstraction (like Lisp or ML), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), one that supports coroutines (like Icon or Scheme), and one that supports parallelism (like Sisal).&#34;</strong></p> <blockquote> <p>Is Google, or any other big company for that matter, willing to push Go forward and improve its market share?</p> </blockquote> <p>It doesn&#39;t need a &#34;big company&#34;, Go is basically crushing it. I hardly could imagine a stronger place for a language that hit 1.0 about 3 years ago. It is serving massive traffic (100 billion+ a day via BFE team) at Baidu, it is at the heart of Docker, it is being used by tons of companies you know and depend on (listed above). </p></pre>arnoldthemountain: <pre><blockquote> <p>Go: [Projects] Docker, Juju, NSQ, Cockroach, Hugo, Gogs... [Companies] Bit.ly, Baidu, CloudFlare, Heroku, DigitalOcean, Disqus, Dropbox, Github, New York Times, Twitch, Tumblr, Twitter...</p> </blockquote> <p>And Google</p></pre>dgryski: <pre><blockquote> <p>It is serving massive traffic (100 billion+ a day via BFE team) at Baidu</p> </blockquote> <p>Do you have a reference for that? Baidu isn&#39;t listed on <a href="https://github.com/golang/go/wiki/GoUsers" rel="nofollow">https://github.com/golang/go/wiki/GoUsers</a></p></pre>robertmeta: <pre><p>Hmph. Trying to think where someone spoke of it. Might have been a meetup or some informal conversations. </p> <p>You can at least see a references to it on Miao Zhang&#39;s LinkedIn -- hardly authoritative, but at least something online: <a href="https://www.linkedin.com/pub/miao-zhang/18/b54/78a" rel="nofollow">https://www.linkedin.com/pub/miao-zhang/18/b54/78a</a> </p></pre>usernameliteral: <pre><blockquote> <p>1 - lots of rants about Go problems (lack of generics, the guy that after one year quite go with a very valid bunch of criticism regarding tooling, another guy saying the his goal in IT is to be away from maintaining Go code) etc etc</p> </blockquote> <p>People complain about lots of stuff. The fact is that many people are using Go in production today.</p> <p>“There are only two kinds of languages: the ones people complain about and the ones nobody uses” — Bjarne Stroustrup</p> <blockquote> <p>2 - The fact that it seems Go community is actually less active, than say, Rust. As of the moment of this post, there are 41 active users here and 85 in Rust subreddit.</p> </blockquote> <p>That&#39;s a ridiculous metric.</p> <blockquote> <p>3 - Lack of mention of Go in lasted Google I/O</p> </blockquote> <p>I think Brad Fitzpatrick said something about I/O being mostly about Android. Anyway, even if it wasn&#39;t at I/O, there are conferences that are all about Go all around the world and many meetup groups. GopherCon, GoCon, Gophercon India, GothamGo... How many Rust conferences are there?</p> <p>People are building solid, production software in Go <em>today</em>, not just writing blog posts about the perfect language of tomorrow.</p></pre>davecheney: <pre><blockquote> <p>1 - lots of rants about Go problems (lack of generics, the guy that after one year quite go with a very valid bunch of criticism regarding tooling, another guy saying the his goal in IT is to be away from maintaining Go code) etc etc</p> </blockquote> <p>&#34;There is only one thing in life worse than being talked about, and that is not being talked about.&#34; - Oscar Wilde </p> <blockquote> <p>2 - The fact that it seems Go community is actually less active, than say, Rust. As of the moment of this post, there are 41 active users here and 85 in Rust subreddit.</p> </blockquote> <p>You need to widen your net. To throw out a few stats. There are currently 1000 users on golang-nuts IRC, 2200 on the gophers slack #general channel. Over 100 Go meetups around the world, <a href="https://go-meetups.appspot.com/">https://go-meetups.appspot.com/</a> (page down :( thanks meetup.com), 10 Go conferences this year, the largest featuring 1500 Go developers. Twitter #golang vs #rust is tilted much in favour of the former. <a href="https://github.com/golang/go/wiki/GoUsers">https://github.com/golang/go/wiki/GoUsers</a>. <a href="http://gophervids.appspot.com/">http://gophervids.appspot.com/</a></p> <blockquote> <p>3 - Lack of mention of Go in lasted Google I/O.</p> </blockquote> <p>Meh, looks like it&#39;s just Android I/O now, no biggie, we have 9 other conferences.</p> <blockquote> <p>4 - Very few job openings for Go. (Even in Who is Hiring in HN).</p> </blockquote> <p>I don&#39;t believe this is true, North America is crying out for Go developers.</p></pre>theonlycosmonaut: <pre><p>Ooh, I like the Oscar Wilde quote. Much less overused than Bjarne ;).</p></pre>rwnilsen3: <pre><p>I&#39;ve been keeping a search out for &#34;golang&#34; in indeed postings, but haven&#39;t seen many at all that list go-specific jobs.</p> <p>When I <em>do</em> see it, it&#39;s in a sentence like &#34;desirable experience with Java, Scala, Python, Golang...&#34;</p> <p>What&#39;s your source, dave?</p></pre>davecheney: <pre><p>There are daily job postings on the #golang hashtag on Twitter. Also, follow @welovegolang for dedicated Go job postings.</p></pre>davecheney: <pre><p>Also, it&#39;s a fair bet that every one of the GopherCon sponsors, and the speaker&#39;s employers are hiring.</p></pre>calebdoxsey: <pre><blockquote> <p>So the point is, is it safe to attach my wagon to Go?</p> </blockquote> <p>The simple answer is: no. You need to learn additional languages.</p> <p>You&#39;re probably asking the wrong question though. You should figure out what it is you would like to focus on: </p> <ul> <li>What area of development (web, mobile, backend, frontend, etc...)?</li> <li>What kind of company would you like to work for (small startup or giant corporation)?</li> </ul> <p>The area of development has a huge impact on what languages you need to know. If you are in the web space you need to learn HTML, CSS and Javascript. If you are in the mobile space you need to learn Java for Android and Object C (or Swift anyway) for iOS. If you want to work on more systems-level applications (or games) you are going to need to learn C and C++.</p> <p>And the kind of company also has a huge impact. Most larger companies are very conservative in their technology choices. They probably use Java, so if you want a job there you probably need to learn Java. Many small startups are much more willing to take bigger risks. In my experience they aren&#39;t only willing to use multiple languages, but expect you to be comfortable doing so.</p> <p>All that said I think Go is definitely worth learning. I don&#39;t know your background, but if you&#39;re coming from a dynamic language (like Ruby, NodeJS or Python) Go can help transition you to strongly-typed languages. It&#39;s a very accessible and productive language: you can get started in a few days and the actual language is fairly minimalistic. And there are also real gems in the way Go was designed that are good things to learn. Spend a few weeks reading / watching some of what Rob Pike has to say about programming and you&#39;ll be much better for it even if you don&#39;t end up using Go in your job.</p> <p>Learning Go will make you a better programmer.</p></pre>roveboat: <pre><blockquote> <p>The fact that it seems Go community is actually less active, than say, Rust. As of the moment of this post, there are 41 active users here and 85 in Rust subreddit.</p> </blockquote> <p>I don&#39;t think active users on a subreddit is <em>that</em> great of a metric of a languages popularity. How about GitHub <a href="http://githut.info/">stats</a> - 22k active repositories for Go and under 5k for Rust. Or GitHub trending - <a href="https://github.com/trending?l=go&amp;since=weekly">Go this week</a>, <a href="https://github.com/trending?l=rust&amp;since=weekly">Rust this week</a>. Across the board, Go projects in the list have received much more stars than Rust projects, in fact <em>all</em> Go projects on the list have received more stars than all Rust projects except for Rust itself and pulldown-cmark. </p> <p>Go projects also include very influential projects like (especially in the devops/systems/backend space) like CockroachDB, Docker, Kubernetes, Prometheus, etcd and Influxdb. </p> <p>Go is not - in my view - trying to be a generalist language like Rust. It&#39;s trying to be an awesome language to do hardened, available systems in and it <em>is</em> taking over a big mindshare in that segment.</p></pre>hayzeus: <pre><p>Don&#39;t hitch your wagon to any single language. I&#39;ve been doing this for nearly 30 years professionally and over that time I&#39;ve used a LOT of languages. </p> <p>Look at your career as play, and languages and frameworks as the stuff you play with. If you can do that, you&#39;ll be fine.</p></pre>pinpinbo: <pre><p>I think it is very safe to attach your wagon to Go.</p> <p>I will go a bit controversial here and say you should go all-in on Go. Here&#39;s why:</p> <ul> <li><p>The language spec is tiny, you can go crazy at it for 3 weekends and get a handle on all its features.</p></li> <li><p>Lack of generics is never a problem at all. For custom &#34;generic&#34; structs, <code>go generate</code> is more than enough.</p></li> <li><p>Haters gonna hate, I work at a company that doesn&#39;t advertise on using Go and yet, the entire site-engineering team use and LOVE Go. There are a lot of companies like that, e.g. Dropbox or Stripe. </p></li> <li><p>Once you see high performance daemon consuming only 11MB of RAM, it&#39;s hard to go back to the past.</p></li> <li><p>Once you see how trivial it is to deploy a single binary executable to production, it&#39;s hard to go back to the past.</p></li> <li><p>In terms of popularity, sample sets matter. <a href="http://githut.info/">GitHut</a>, for example, tells a different story. Go is much larger than Rust.</p></li> </ul> <p>If you have not catch my drift, Go is very safe and you should go all-in.</p></pre>IntellectualReserve: <pre><p>It&#39;s not safe to attach your wagon to anything. You get safety from adaptability. </p></pre>khaki0: <pre><p>You have to see things in perspective. There&#39;s no language without tradeoffs and ultimately the decision comes down to if it&#39;s the right tool for the job or not. Go is simple, productive and fast with a rich standard library and some useful tooling around it. </p> <p>Yep there&#39;re things that could be improved but the bottom line is I can write a performant app without much magic behind the scenes, pretty quicky. In that regard I don&#39;t think much about the points 1-3. It&#39;s open source and the community will eventually fill the gaps if any comes up. Point 4 is partly dictated by the fact that there aren&#39;t many Go programmers out there so companies might try to play it safe and go with Python or Ruby.</p> <p>You won&#39;t lose anything by learning Go - especially if your background is mostly in scripting languages. The tooling is actually not bad, you just need to be careful a bit. The lack of generics might be an issue sometimes but still manageable. However if you find yourself needing generics very often for a project then you might rethink if Go is the right language for it.</p> <p>Just accept the fact that Go is not perfect, and do not be afraid to use other tools along with it. For example, I write my templates in Jade as I&#39;ve found Go&#39;s template package pretty minimal.</p></pre>martingx: <pre><p>Regarding (4). After I added golang to my linkedin profile, my inbox exploded with jobs and I still get lots through. I&#39;m based in London.</p></pre>dericofilho: <pre><p>Definitely it did not happen to me - added both Go and Golang in Linkedin no results. I am based in Benelux area.</p></pre>maruwan: <pre><p>Same here...</p></pre>dvirsky: <pre><blockquote> <p>So the point is, is it safe to attach my wagon to Go? </p> </blockquote> <p>Safe - yes, probably. It won&#39;t hurt you in any way.</p> <p>Wise - no, and not just because it&#39;s go. While you <em>should</em> master a few languages, you should diversify and not limit yourself to 1-2. Be very good in at least 2-3 major languages, and be reasonably fluent in 4-5. You&#39;re right about there not being many Go jobs, but that will increase, I&#39;m sure. You can learn Java and spend your entire career in Javaland, but personally I wouldn&#39;t want to do that.</p> <p>And, having said that, when I&#39;m hiring developers, for most jobs, knowing the languages my team works with is a plus, but not a must. I&#39;ve hired brilliant developers and just let them sit for a week or two and gain a good enough understanding of our languages and stack, and they continue to pick it up as they do real work. </p> <p>I&#39;m not sure if this hiring preference is rare or not, but I think you might prefer working for companies who value your skills as an engineer and not as a programmer in languages X.</p></pre>dvirsky: <pre><blockquote> <p>2 - The fact that it seems Go community is actually less active, than say, Rust.</p> </blockquote> <p>Compare the traffic on the go-nuts mailing list and the rust users forum. I think go-nuts has higher traffic, and I&#39;m not counting the dev lists at all. Where a community gathers has nothing to do with anything. <a href="/r/golang" rel="nofollow">/r/golang</a> is a small subreddit because the community has other much more popular outlets.</p></pre>dericofilho: <pre><p>Which outlets would they be?</p></pre>dvirsky: <pre><p>As I said, go-nuts and go-dev mailing list, the #go-nuts IRC channel on freenode seems very active, and the G+ group used to be active but it looks like it isn&#39;t anymore. </p></pre>natefinch: <pre><p>Learn one of these, and you&#39;ll always have a job:</p> <ul> <li>Javascript/CSS/HTML</li> <li>Java</li> <li>C++</li> <li>C#</li> <li>Python</li> </ul> <p>Ruby is almost in this list, but Ruby on Rails has the potential to just be a fad, so I&#39;d be careful about banking my career on it. However, for right now, it&#39;s still a highly desired skill. You can put Swift/Objective-C in the same bucket. Engineers that can build iOS apps are always in high demand, but it&#39;s a very targeted skill that is not generally applicable, so I&#39;d make it a secondary rather than a primary focus.</p> <p>Anything else is going to require some looking. Sure, for the right company, having expert Haskell/Erlang/C skills could make you a shoe-in, but for many many companies, it&#39;s not a skill they&#39;re going to even consider.</p> <p>Go is a great language, and I think it will explode in usage for networked servers... but it&#39;s not really big enough right now to bet your career on, unless you already have a ton of experience in other languages.</p></pre>hayzeus: <pre><p>Ruby on Rails has fad potential? Seriously?. Not defending Rails here --- there&#39;s a lot to hate about it -- but you&#39;re talking about a framework that&#39;s been around since 2005/5 and widely used since 2007. Whatever other issues ruby/rails might have, the fad potential is pretty low.</p> <p>EDIT: <em>since 2004/5</em></p></pre>natefinch: <pre><p>I guess I just have read many of these: </p> <p><a href="http://blog.parse.com/learn/how-we-moved-our-api-from-ruby-to-go-and-saved-our-sanity/" rel="nofollow">http://blog.parse.com/learn/how-we-moved-our-api-from-ruby-to-go-and-saved-our-sanity/</a> </p> <p>Maybe fad is the wrong word. But I think it&#39;s going to start dropping in popularity at sites where scaling is likely to become an issue.</p></pre>drvd: <pre><p>Predictions are hard. Predictions about the future are extremely hard and error prone.</p></pre>nowayno: <pre><p>The adoption of Go is accelerating. You&#39;ve chosen some bad measuring sticks.</p> <ol> <li><p>People rant about every language, except those which aren&#39;t popular. There are many companies with teams building critical pieces of infrastructure in Go and strangely they don&#39;t seem to have been hamstrung <em>at all</em> by generics or tooling or any of the other supposed shortcomings that naysayers love to harp on about.</p></li> <li><p>Subreddit members? That&#39;s your metric? There are lots of places where people go for Go support — the mailing list, StackOverflow, IRC, etc. — and all of those are quite active (far more active than the equivalents for Rust, though that&#39;s hardly a relevant comparison).</p></li> <li><p>Google I/O has become a conference entirely devoted to Android and browser-based app design. There&#39;s no reason why there <em>should</em> be golang sessions at I/0 anymore, since hardly any of the attendees would be interested.</p></li> <li><p>There are vastly more jobs for Java, C++, Python, Ruby, etc., but I wouldn&#39;t say there are &#34;very few&#34; job openings for Go. Searching golang on indeed.com turns up 250+ jobs and we&#39;re still pretty early in the adoption curve for Go so the number of jobs will grow exponentially for the next several years.</p></li> </ol> <p>You shouldn&#39;t learn <em>only</em> Go, of course, but there&#39;s no downside and lots of upside.</p></pre>dooferlad: <pre><p>I have had jobs writing C (4 years), C++ (6 years), Python (3 years) and Go (4 months). I wouldn&#39;t say that I am as productive in Go as I am in Python, but there isn&#39;t much in it. I have also written in Perl, 68k assembler, ARM assembler, JavaScript, HTML, CSS (and its pre-processor cousins). You can&#39;t escape the odd shell script, Makefile even Windows batch files. You will find XML, JSON, YAML, INI and numerous other data file formats. You soon find that the less you attach any preference to the language in front of you, the happier you are. Working out how to adapt is key.</p> <p>Those languages all have a shape to their code that is defined by some key language feature; with C any sufficiently large program is a memory management problem. It is a great little language though and has great tool support, so you can find a good IDE without much effort and being able to edit and debug your code in one place is nice. You don&#39;t need to printf debug - use a debugger to walk through your code and watch it work.</p> <p>C++ wants to be polymorphic in any way it can, so embrace inheritance and templates - as soon as you learn to love them you become very productive. It is a huge language though and I would say that is its main problem; it is very easy to find code that makes no sense because something is using templates in an odd way or something has been overloaded. You can save a lot of time by reading C++ in an editor that has good introspection. Lots of C++ seems to be C with classes, but that is missing out. If you use C++ read up on templates; you can do some very cool things with them or get very confused if someone else is and you don&#39;t know how.</p> <p>With Python you live in classes and dictionaries and you don&#39;t miss templates because you don&#39;t really care about types like you used to and you can examine types anyway, so you can do quite meta-ish stuff if you want. Decorators are nice. PyCharm is a lovely IDE for it and an IDE will help with all those libraries. Oh and debugging, yay for good debuggers!</p> <p>JavaScript is kind of horrible because it is just too forgiving. Use an editor like Brackets that runs linting tools in the background and you will be much better off. JavaScript is made of objects and they don&#39;t care what you do with them. My brief experience with Dart would suggest that I should use Dart over JavaScript at any opportunity.</p> <p>Maybe I haven&#39;t found that single thing about Go yet, it is probably channels with goroutines. I think I would just say that it just wants to have one really nice way of solving every problem. The language just big enough to be productive but small enough that it doesn&#39;t take long before you can comprehend anything written in it. The libraries are great. You will probably grumble about everything returning a darn error that you have to check and wish for exceptions, but not for long; you just get used to writing error handling code and you don&#39;t have to worry about if you have caught exceptions where you should.</p> <p>Mostly what I miss about Go is a nice debugger. Delve seems to be coming on, but an IDE seems to be missing from the toolkit.</p> <p>Basically, learn Go now or later if you need it. Just learn languages. <a href="https://projecteuler.net/">https://projecteuler.net/</a> is a good place to find increasingly difficult problems to solve and doesn&#39;t care what language you are using.</p></pre>dhdfdh: <pre><p>There are more developers at Google using Go than there are users of most sub-reddits.</p></pre>deferpanic: <pre><p>Lots of great comments here - I&#39;d read them all because they all offer great views.</p> <p>I&#39;ll just get to the meat of the question.</p> <p>Yes. Yes. and more Yes.</p> <p>We talk to gophers from a wide range of companies throughout the world pretty much everyday ranging from small one person consultancies to companies with over a thousand engineers in them. Companies from social/mobile startups to oil companies to banks.</p> <p>It&#39;s our viewpoint that Go is not only going to be a &#34;great ride&#34; in your wagon but it&#39;s going to become the next great language.</p> <p>Go is the future.</p></pre>vorg: <pre><p>Big software companies want their own programming language, both for prestige reasons and to cover their backside against incompatibilities against their software from the platform below. That&#39;s why Microsoft created C# and Oracle bought Sun for its crown jewels Java. It&#39;s why Apple created Swift and Google &#34;owns&#34; Go. But of course Google doesn&#39;t own Go, they just &#34;own&#34; it because they can fork and replace it at any time. There&#39;s been exceptions in the past, like Python and Lisp, but generally even IBM owned IBM/Cobol and PL1, and Burroughs owned Algol. So based on that, I&#39;d say Google will continue backing and promoting Go if only for prestige.</p></pre>aikah: <pre><blockquote> <p>1 - lots of rants about Go problems (lack of generics, the guy that after one year quite go with a very valid bunch of criticism regarding tooling, another guy saying the his goal in IT is to be away from maintaining Go code) etc etc</p> </blockquote> <p>Pike said go design is &#34;done&#34;, another Go team guy in a podcast said no significant features will be added to the language. I think things are pretty clear, Go will never have generics , if this is something you can&#39;t live without, do not use Go in the hope that maybe it will get generics, or feature X or Y, it won&#39;t, period. Some People have been asking for other features for years, until they stop asking and stop using Go... </p> <p>Same with the tooling, do not expect anything from the Go team at that point. It seems there is a debate about a manifest format for dependencies however, I have no idea where it is heading.</p> <blockquote> <p>So the point is, is it safe to attach my wagon to Go? Is Google, or any other big company for that matter, willing to push Go forward and improve its market share?</p> </blockquote> <p>No you shouldn&#39;t. Because you&#39;ll hardly make a career as a Go developer. Go is so opinionated I hardly consider it a general purpose language. It&#39;s a missed opportunity if you ask me,but it&#39;s not the first time some people design something with potential but also a totally lack vision. Go might be a blueprint for a future language with CSP that will satisfy more developers. </p> <p>Tldr; don&#39;t invest heavily in Go, try to look at other potential languages , one of them might be the language of the future, maybe Rust, Nim, Crystal , but not Go.</p></pre>usernameliteral: <pre><blockquote> <p>Pike said go design is &#34;done&#34;, another Go team guy in a podcast said no significant features will be added to the language. I think things are pretty clear, Go will never have generics</p> </blockquote> <p><a href="https://www.reddit.com/r/golang/comments/36n8hd/go_is_unapologetically_flawed_heres_why_we_use_it/crg3maa?context=3" rel="nofollow">https://www.reddit.com/r/golang/comments/36n8hd/go_is_unapologetically_flawed_heres_why_we_use_it/crg3maa?context=3</a></p></pre>aikah: <pre><p>your point being?</p></pre>usernameliteral: <pre><p>My point is that Andrew Gerrand, a member of the Go team, questioned the assertion that Go 2.0 will not have generics.</p></pre>adam_0: <pre><p>There&#39;s no reason to say &#34;Go 2 looks like X&#34; because there probably isn&#39;t even a vision for Go 2 yet.</p></pre>

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

919 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传