TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Is Java the Cobol of tomorrow and Go the Java of the future?

41 点作者 minaandrawos将近 11 年前

22 条评论

bad_user将近 11 年前
The argument on looking at Go&#x27;s trend in isolation is a really weak one. Let&#x27;s also look at Clojure in isolation: <a href="https://www.google.com/trends/explore#q=clojure" rel="nofollow">https:&#x2F;&#x2F;www.google.com&#x2F;trends&#x2F;explore#q=clojure</a> - and oh look, Clojure runs on the JVM.<p>&gt; <i>If I were a developer getting started today, I’d make a career bet on Go</i><p>Advice on picking languages as career bets are especially weak. In my experience, careers are being built on being able to get stuff done and in the long list of things that a developer has to learn to get stuff done, the language itself is very uninteresting considering everything else combined. Personally it takes me 2-3 weeks to become functional in any new programming language, I&#x27;ve worked with half a dozen thus far in production and I played with another dozen in my free time. The language itself is like a drop in an ocean, compared to more fundamental knowledge that makes one productive, like math, algorithms, concurrency and parallelism, hardware, usability, domain specific knowledge, libraries, frameworks, being able to interact with a community, etc...<p>&gt; <i>Go is a simple language by design. You can read the spec and other materials on the Golang website and start being productive in a single day</i><p>Simplicity in the language doesn&#x27;t translate to simplicity in the solutions that you&#x27;re building. This is a fundamental divide, since often people are mistaking simplicity for easy, for being familiar. It&#x27;s not in the original sense of the word - simplicity is the opposite of complexity, which means interwoven or entangled and in the context of software it means building reusable &#x2F; modular components, that do one thing well and that can be stacked &#x2F; connected together to build bigger solutions and to keep complexity manageable.<p>Go is in fact anti-simplicity. Its lack of generics, given its static typing, is a really good example of a design fuck-up, since for building reusable higher-level abstractions, one really, really needs generics and this is an objective fact - note that we aren&#x27;t talking about dynamic languages here, which don&#x27;t care about static typing or for being close to the metal. There&#x27;s no point in denying that and Go will end up like both Java and C++, both of which didn&#x27;t have generics in the beginning - and so it will end up with a half-baked solution with lots of corner cases and that people will hate, until the next language comes along also lacking generics, because &quot;simplicity&quot;, repeating the cycle ad-nauseam.<p>In fact a programming language is supposed to be extensible, because both in natural speech and in our systems, we are extending our language all the time to manage complexity. If this gives birth to features that are harder to learn, that&#x27;s a freaking drop in the ocean compared to all the shit that we must do when implementing complex business logic. I recommend watching Guy Steele&#x27;s &quot;Growing a Language&quot; presentation, it&#x27;s very enlightening: <a href="https://www.youtube.com/watch?v=_ahvzDzKdB0" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=_ahvzDzKdB0</a><p>But then again, extensible languages and higher-level abstractions are raising the bar to entry, which often goes against the other generally accepted solution for managing complexity, which is to hire more average Joes that can sit in a chair and type.<p>&gt; <i>Simple languages are easier to learn.</i><p><i>Familiar</i> languages are easier to learn. There, fixed the typo. And if you&#x27;re only learning familiar stuff, then you&#x27;re not learning anything new ;-)<p>I keep going back to Alan Kay&#x27;s quote which will be relevant for a long, long time: &quot;Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.&quot;
评论 #8179801 未加载
评论 #8178058 未加载
评论 #8178508 未加载
threeseed将近 11 年前
Do I believe Java will be the next COBOL. Absolutely. Do I believe Go will be the next Java. Absolutely not.<p>1) It ignores where Java is being used. It is dominant within the enterprise. Features like a single binary, lack of a reverse proxy or taking advantage of multiple cores aren&#x27;t at all compelling. We have dedicated ops teams happy to automate deployments, hardware load balancers and are rarely doing anything CPU intensive.<p>2) It ignores language trends. Functional programming is what is hot right with Scala and Clojure being what most enterprises are choosing to adopt for the next big project. Why ? Because they can leverage all their existing Java libraries&#x2F;practices but without the boilerplate and language overhead of Java.<p>3) It ignores architectural trends. Go&#x27;s concurrency approaches are nice but aren&#x27;t that special and again aren&#x27;t that useful in most cases. Unless you are someone like Cloudflare it is far easier to just horizontally scale your app servers across seperate instances. It&#x27;s more expensive but hardly worth deciding your platform over.
评论 #8176863 未加载
julianpye将近 11 年前
Maybe it makes sense to understand why Java is where it is today. It is not because programmers thought it was the best technology, but because of politics. At the time of introduction, Microsoft held a clear platform monopoly and the key skills in demand were C++&#x2F;MFC and the like. Sun was the underdog and Java was positioned to become a counterweight to this monopoly and many companies supported it heavily just to provide a balance. From a developer standpoint Go is superior, but would the same political support happen for a Google-invented language?
评论 #8176918 未加载
评论 #8176865 未加载
评论 #8176806 未加载
评论 #8176994 未加载
评论 #8176885 未加载
评论 #8176869 未加载
adamors将近 11 年前
&gt; Go’s performance isn’t a big win for Java developers since they’re already doing pretty well. But for us dynamic language refugees, Go’s performance is liberating. No dealing with reverse proxies to send things to multiple processes. Real threading and the ability to take advantage of every core. Async IO, but without all the callbacks.<p>Jesus, are people really this excited about features that existed for at least 15 years in other languages?<p>This one language for everything mentality is ushering in a huge NIH cycle.
评论 #8176777 未加载
评论 #8176775 未加载
评论 #8176784 未加载
评论 #8176755 未加载
mseebach将近 11 年前
I think the author is mostly right, but he fails to recognize that the difference between COBOL and Java is much, much bigger than the difference between Java and Go. Right now, I think that the full Java ecosystem is &quot;better&quot; (to the extend that can be meaningfully measured) than the equivalent in Go, to an extend COBOL probably never was to Java. Obviously that gap will close, and fast, but it&#x27;s an example of just how relatively close those two languages are.<p>And then this:<p>&gt; Any developer that cares about their demand in the market (and salary potential) and any employer wishing to hire should factor language life-cycle into their language choice. I’m sure there are still COBOL programmers out there, but I wouldn’t want to be one of them if I was looking for a job and I wouldn’t want to be an employer trying to find a competent COBOL programmer or anyone that wanted to learn.<p>Few things scream &quot;name your salary&quot; in this business like being a competent and willing COBOL programmer. I&#x27;m not sure that learning COBOL from scratch is a viable career path these days (there&#x27;s a chicken-and-egg problem, you&#x27;re not going to become great a any language without actually working in it, and nobody is going to let you work in it before you&#x27;re pretty great), but I WOULD &quot;want to be one of them if I was looking for a job&quot;.
评论 #8176852 未加载
foononomepls将近 11 年前
Dream on. You cannot predict the future from the presents past. Go is hyped a lot but at the end it&#x27;s not that much needed as Google wants it to. Java is easy to learn, very fast and hast tons of frameworks and documentation.<p>For other stuff there is still c++ and python with QT and if for some folks ofc there are ruby, perl, Haskell and so on.<p>Also, and this is an important point go was invented by Google and Google is not the cool hip company it used to be it is. Ow the complete opposite and part of orwells vision...
评论 #8176780 未加载
jhh将近 11 年前
I don&#x27;t see why the future wouldn&#x27;t be polyglot, in the sense that there isn&#x27;t one language as dominant as Java has been.<p>There is now much better language interop than in the past, e. g looking at C interop in Julia and Java interop in Clojure and other JVM languages.<p>Using HTTP on distributed queues on less unreliable, faster networks than in the past makes building distributed systems using many different languages easier (SOA, Microservices).<p>On the clientside there are strong proprietary ecosystems which dictate the use of a specific language (more or less), Android, Windows (C#), Apple (Obj. C, Swift).<p>Therefore I think it is plausible to assume that no single language will (have to) become as dominant as Java has been
masklinn将近 11 年前
If Java is the Cobol of tomorrow and Go is the Java of tomorrow, doesn&#x27;t that make Go the Cobol of the future (after tomorrow)?
评论 #8176779 未加载
评论 #8176772 未加载
wheaties将近 11 年前
Same could be said for Idris, Haskell, Scala, Clojure, Node.is, etc. Nothing against Go, I like it, it&#x27;s just one more language to choose from.
johan_larson将近 11 年前
I had a chance to do a bit of Go work while at Google. Coming from the complexities of C++&#x2F;STL, the simplicity was a blessed relief.<p>Unfortunately, I don&#x27;t think that simplicity will last. Other popular languages like the C family and Java were pretty simple when they started out. But C became C++ became C++ with STL, with all the attendant complexities. Similarly, early Java was a pretty clean language, but they added generics and various libraries, to say nothing of the swamp of a tooling ecosystem built around the language. &quot;Your experience is in Hyperstruts? Sorry pal, we only work in JToolkitMVC.&quot;<p>If Go becomes a big success, I predict it will walk the same path, gaining complexity either in the language itself or in the surrounding libraries or frameworks. Simplicity is a sign of immaturity, and it will not last.
knocte将近 11 年前
I won&#x27;t try Go until it implements generics and changes its hide-error-by-default behaviour.
评论 #8176791 未加载
评论 #8177453 未加载
joshuaellinger将近 11 年前
I am a rare (for Hacker News) C# dev and I&#x27;ve just been toying around with Go. There is stuff to like but my feeling is that the biggest weakness of the language is that it is designed to solve the problems that Google has (surprise), which is only a fraction of the problems that the world has.<p>It is a scalpel verses a swiss-army knife. The question is which do you need.<p>If you are doing Internet-related things (server-side plumbing and apps, not search), it looks like a pretty darn good fit. It naturally leads you build up a set of small start tools that you combine to build a larger service. The channels metaphor is a really nice way to deal with concurrency.<p>If you are building anything else (desktop, LOB apps, DB front-ends, mathy stuff, etc.), it looks a bit limited. For example, it doesn&#x27;t have a modulus operator. Not a big deal but it shows that the language designers are more concerned about supporting their target domain than supplanting Java, much less C#.<p>Really, the thing that I fine the most troublesome is this feeling that the designers of the language have such a focused vision that it will hinder the growth in the future but, for now, it needs that to keep from becoming overgrown like C# is.
评论 #8177376 未加载
评论 #8177238 未加载
评论 #8178520 未加载
评论 #8176976 未加载
cryptos将近 11 年前
I&#x27;ve spend some time with Go, but never felt overly productive with it. As someone else in this discussion mentioned a simple language doesn&#x27;t mean that solutions in this language are simple! Look at what real problems you have to solve in you applications, and then tell me that generics in a statically typed language are not important! Go applications are full of useless code to circumvent this restriction. Want to make something immutable? Not very convenient in Go, very easy in most other (statically typed) languages.<p>While Scala has a complex type system it is a simple language at it&#x27;s heart. For example try-catch is not a special language feature but another application of the powerful pattern matching. It will take a little longer to learn Scala compared to Java, but you get a much better tool to solve the most problems. And you get all the libraries and the tools (any Go IDE on the level of IntelliJ or NetBeans?) of the big Java ecosystem.<p>But even if you don&#x27;t want to use Scala, you could be more productive with Java than with Go. From a Java perspective Go has not much to offer, not even fancy concurrency.
th3iedkid将近 11 年前
am very happy the author is happy with go.<p>&gt;&gt;Deploying Go code to production is as simple as copying a single binary file up to a server and running it. No reverse proxies, no dependencies to install on the target server, no class paths. Just copy the binary and run.<p>This fairly depends size of system we are discussing.<p>&gt;&gt;Some developers have noted Go’s lack of features or a few other things: no exceptions, nils instead of options, inability to specify dependency versions, mark and sweep GC, no macros, no generics.<p>languages such as Java too grew out from such weaknesses and are still growing<p>&gt;&gt;If I were a developer getting started today, I’d make a career bet on Go.<p>Fairly good but it depends on what market attracts you.For e.g. if you were to target financial markets with big responsive systems , i doubt if they have loads of Go lang hires vs the same on say Java hires.But if we were to target a different market,it would change too!
stefanve将近 11 年前
I think a very big difference between Cobol and Java&#x2F;.NET is that it is being used in far more places (mobile,desktop,enterprise) and that the runtime is open for other languages (F#,Scala,Python, Ruby etc) because of this the main languages are constantly evolving as well and lots of libs and platforms are written in the main languages, maybe something like Scala will replace Java or Java will become more like Scala but I guess it would not be so easy to replace the the JVM or .NET as it is to replace a (almost) single domain language
seanhandley将近 11 年前
One thing to bear in mind is that &quot;Go&quot; isn&#x27;t very easily googleable so that graph could well be unreflective of genuine interest.
评论 #8176815 未加载
评论 #8176759 未加载
miralabs将近 11 年前
Im thinking what will happen is there will be a version of java (along with the frameworks and technologies ) that will become Cobol and new version of Java will move on and improve. I dont think it will be the next Cobol. When cobol was around, not so many were using it and technology is limited.Today, Java is just everywhere.
dragonwriter将近 11 年前
&gt; Is Java the Cobol of tomorrow and Go the Java of the future?<p>If so, does that make Go the COBOL of the day after tomorrow?
tdsamardzhiev将近 11 年前
No, Go is the Go of today and Java is the Java of today. I do belive Go has future, though.
tobias__将近 11 年前
I imagine the interest&#x2F;time graph is strongly influenced by users installing the JRE
alisnic将近 11 年前
%s&#x2F;Go&#x2F;Elixir
Grue3将近 11 年前
Betteridge&#x27;s law of headlines says no.
评论 #8176971 未加载
评论 #8176824 未加载