TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

C vs GO

202 pointsby akgalmost 13 years ago

14 comments

copxalmost 13 years ago
I like Go but it's not a replacement or even just competition for C. Garbage collection alone ensures that.<p>C is for low-level code, where you usually want deterministic, real-time behavior. Go cannot deliver that because of its GC.<p>You can certainly write web server software in Go (what Go was designed for), but could you write an "AAA" video game in it? Or a mission critical embedded system with real-time requirements?<p>Also, the author's portrayal of C is misleading. If you have 'naked' malloc() calls all over your code you are doing something wrong. Much C code never calls malloc() or follows the "no allocation after initialization" principle.<p>If you write C like Python you will run into problems. In C you do not wildly allocate objects on the heap all across the program. E.g. in my current program almost everything comes out of memory pools. E.g.<p>Object* object = ObjectNew();<p>..and if I forgot to release it I would know quickly because any "memory leak" would cause the (pre-allocated, fixed size) memory pool to run out of free slots. In C you should manage memory in a systematic fashion.<p>I think the C standard library should be seen as the very foundation of a program, something you use to build the abstractions which solve the problem, not something you use directly to solve the problem. People often warn about the dangers of strcpy() (an the author uses it). I never use it except at the lowest levels. At the high level robust C code looks more like this:<p>ObjectSetName(object, newName);<p>than this<p>strcpy(object-&#62;name, newName);<p>..the difference is that ObjectSetName() can internally guard against overflow and that the concrete details of the object data structure remain hidden and thus later code changes are easier. It is a very common C idiom to use incomplete types and such functions to achieve a very high level of encapsulation.
评论 #4111033 未加载
评论 #4111470 未加载
评论 #4112671 未加载
fingerprinteralmost 13 years ago
I guess I might be the only one to say this, but is this a joke? Some sort of prank? Not a single Go program is more readable, and I would argue that they are ALL less readable (and I like Go).<p>I honestly can't tell if he is trolling or if he is serious.
评论 #4111843 未加载
评论 #4111321 未加载
评论 #4111318 未加载
评论 #4113162 未加载
评论 #4111873 未加载
评论 #4111337 未加载
评论 #4112245 未加载
simiasalmost 13 years ago
Damn. I can't comment on the Go listings, but could he make his C code any <i>less</i> readable?<p>What's the point of making the code so dense anyway? Without syntax highlighting I gave up pretty quickly.
评论 #4110779 未加载
评论 #4113029 未加载
ralphalmost 13 years ago
I gave up reading this very early on. The striving for compactness of the source, in both C and Go, makes it misleading to read. Take<p><pre><code> if (argc &#60; 2) puts("y"); else { for(int i = 1; i &#60; argc; i++) { if (i &#62; 1) putchar(' '); printf("%s", argv[i]); } putchar('\n'); } </code></pre> A casual skim sees the <i>if</i> followed by an indented block, but that isn't the then-path but the else-path. Now yes, I can read it carefully and follow it, just as if I was debugging someone else's poorly formatted code, but in doing so my attention is being distracted from the main point of the article and frankly I have a huge pile of other things to read that are potentially more rewarding.
评论 #4112781 未加载
评论 #4113027 未加载
gourangaalmost 13 years ago
Interesting comparisons.<p>However (not slating Go, which I think is excellent), I genuinely think Go is going to go the same way as plan9 eventually. Unfortunately, its predecessor (C) is good enough, much as UNIX was good enough compared to plan9.
评论 #4110763 未加载
评论 #4111339 未加载
评论 #4110675 未加载
delinkaalmost 13 years ago
My complaint about Go centers around its mechanics of code reuse: static linking for all Go code; making anything Really Useful requires using other libraries, which includes those written in C, which require use of a tool to help you write your wrapper ...<p>If we could get dynamic linking and something less cumbersome for interfacing with existing libs, I could use Go for Serious Work.
评论 #4111642 未加载
评论 #4111179 未加载
评论 #4111581 未加载
评论 #4113131 未加载
Graphonalmost 13 years ago
People suggesting that Go is a potential replacement for Python, Lua or Ruby are missing the point. IMO, Go isn't designed to compete with those existing languages for existing opportunities.<p>The key opportunity in the future is smart devices everywhere. Embedded, connected intellgence, everywhere. Everything is a communication device. Today your phone and your car; tomorrow: Your shoes, your office, the grocery store, your refrigerator. Think of xbox Kinect-type sensors embedded into everything.<p>Writing solid C code for all those systems will be too hard. We also definitely do not want an serendipitously-designed language (Javascript). Yes, that leaves Python Ruby and so on, which brings us full circle. Go will compete with those languages but not in the domains that are evident today. Not in web browser, and not in a new! improved! web server. It seems to me that Go is a forward-looking design, aimed to meet the challenges of the everything-connected world of tomorrow.<p>To make tomorrow happen, we need a better C. Go is that.
评论 #4112713 未加载
revelationalmost 13 years ago
I can't do system programming using Go on a platform for which there is no compiler. There is probably a reasonable C compiler for every platform in existence out there.
评论 #4110734 未加载
评论 #4111377 未加载
评论 #4110681 未加载
评论 #4110803 未加载
评论 #4110679 未加载
kristianpalmost 13 years ago
Mods, the title should be "C to Go", Go is not spelled with all-caps.
iamgopalalmost 13 years ago
err..sarcasm ?
papsosouidalmost 13 years ago
Go is the best worst language I've used. Most of what I do fits pretty much right in the sweet spot for go, network services and web development. Stuff I would have previously used C and (insert scripting language here) for respectively. Go fits into both of those areas really nicely, and I prefer it over C and scripting language X for these tasks.<p>But the problem is, I've already tried haskell, which also fits that same area, and is semantically a vastly better language. I just wish go had been more willing to push the envelope and at least try to be somewhat modern and useful instead of being "C with modules, but slow". On the other hand, haskell is a terrible language syntactically, and from a development environment perspective. Go is near enough to perfect in those regards. Having a fast compiler, a simple, working build system, a sane and easily enforced code format all make a huge practical difference. I wish I could use go, as it is much nicer than haskell from a usability perspective. But the language is just too primitive.
评论 #4114192 未加载
评论 #4112288 未加载
drivebyacct2almost 13 years ago
I've been using Go exclusively in my personal projects for the last 8 months now, am in love with the simplicitly and fun of writing it (and goroutines), but this is a horrid way of introducing the language. To anyone who doesn't appreciate the Go syntax style, this is an instant turn off. There is a reason there is an idiomatic style used by... every single Go project I've ever seen.<p>Further, these examples are so trivial that one doesn't see an advantage over C and so this comment thread is like every other. Those who've written "Hello World" dismiss it as neither C nor Haskell and most others seem to be generally happy with it.
tubboalmost 13 years ago
I mean, the only other living inventor of C is working on Go...
评论 #4111735 未加载
millerfungalmost 13 years ago
In my opinion, any new language today should be all beginner friendly, there are large pool of people who are interested and it means a great future of our world.
评论 #4111030 未加载
评论 #4111827 未加载
评论 #4110927 未加载