Google Releases Version 1.5 of Its Go Programming Language, Finally Ditches C 221
An anonymous reader writes: Google has launched the sixth notable stable release of its Go programming language Go 1.5. VB reports: "This is not a major release, as denoted by the version number and the fact that the only language change is the lifting of a restriction in the map literal syntax to make them more consistent with slice literals. That said, Go 1.5 does include a significant rewrite: The compiler tool chain has been translated from C to Go. This means "the last vestiges of C code" have been finally removed from the Go code base. As for actual changes in Go 1.5, you'll want to read the full release notes. Highlights include improvements to garbage collection, the developer tools, the standard library, and new ports."
But how many women are using Go? (Score:5, Funny)
The article completely omits any mention of women using the Go language. How many women are enrolled in Go classes across the US? Are there scholarships available yet so our daughters can do a doctoral thesis on Go? Google's misogyny is really shining through this time, it's pretty obvious they expect all women to become hairdressers and waitresses.
Re: (Score:2, Insightful)
I wish you could be modded higher than +5. I see you posted as AC, because having this tied to your name would be tied to a twitter in 2018 and cost you your job in 2021, and that part makes me sad, but... such a good comment.
Posting as AC for similar reasons.
Re: (Score:2)
Propaganda doesn't stop being propaganda just because it's dressed up as a joke. No one is under any obligation to pretend it does, either. Your very expression - the concept of "taking" a joke - implies you know full well it was meant as an attack.
Re: (Score:2)
Sexy Jewish Woman?
Re: (Score:2)
From your description, it still means the same thing as it did before apparently. You've only further proved the point.
"Professional Culture Critics". I'll take "Other names for Charlatans for 200$ Alec".
Comment removed (Score:4, Insightful)
Re:But how many women are using Go? (Score:4, Insightful)
You say all that like it's a bad thing. Oh, sorry, I forgot. Only people who aren't white and who are less than 25 matter in the world these days.
Helpful hint: getting older is a lot easier to deal with if you haven't spent your 20s insulting people who aren't. Because when you're not 20 something anymore, having a brain full of that kind of attitude will just make you feel even more useless than you already are right now.
Re: (Score:2)
News flash: you're wrong.
PS decidinf that there is a dichotomy between "social justice" and "idividual justice" is what's known as a "false dichotomy" and is a well known logical fallacy.
Re: (Score:2, Flamebait)
There is no dichotomy between "social justice" and individual justice, because "social justice" doesn't exist.
I think I've come to the root of the problem: you're an idiot.
http://lmgtfy.com/?q=social+ju... [lmgtfy.com]
Re: (Score:2)
The concept of Santa Claus exists. The concept of social justice exists. In fact, social justice is only a concept with no avatar.
Re:But how many women are using Go? (Score:4, Insightful)
there's Feminism, the decades old effort to promote equal rights for women, which is a real and valid fight. consider the treatment of women in the Muslim world and other places like rural India. do women have a valid fight in those places against institutionalized degradation of women? they do: education denied, no right to drive a car, no right to dress as they want, etc
that's called Feminism
then there's "feminism", this sort of whiny inconsequential hurt feelings by navel gazing socially immature tumblr losers
of course "feminism" is a joke. but Feminism is not
likewise, "social justice", the hyperbolic nonsense from people who have no sense of proportionality or reason in their rants, is bullshit, but Social Justice, the decades old effort to combat systemic hatred and exclusion, is real, and valid
don't mistake some socially retarded internet trolls and their "causes" for the actual causes they claim to stand for
Re: (Score:2)
Instead of trying to label things in a way that is highly confusing (and impossible to distinguish when spoken), why not just make specific arguments. Not "it's whiney inconsequential hurt feelings", I mean specifics like why it's inconsequential.
Otherwise I'm afraid you come over as just another one of those whiney people with inconsequential hurt feelings, because you are so non-specific. At least the people on tumblr identify actual issues that they care about, rather than just making general complaints
Re: (Score:2)
"i am a true muslim, i believe in helping my neighbor, providing for my family, and basic justice"
"i am a true muslim, i believe in raping kafir young girls, beheading unbelievers, and reestablishing the caliphate by war"
the world you live in is full of people who call themselves various labels with completely different meanings, some meanings even contradictory
it is up to you to listen carefully and evaluate what they say, and figure out what they really stand for, no matter what fucking label they use. th
Re: (Score:2)
Problem is, people keep calling me a "social justice warrior" but I've clearly stated multiple times that I'm against discrimination... So either I'm not an SJW, or social justice isn't what you describe.
Re: (Score:3, Insightful)
Who said it was a joke? Gender gets brought up all the time in totally irrelevant situations, because feminists are always thinking about it 24/7 and it frames every situation they ever see. We'll be talking about debugging, or the space program, or anything really, then a social justice warrior parachutes into the conversation and derails it by spewing spittle everywhere. Always they think themselves on-topic, no matter how out-of-left-field their proposition is.
It's not a joke, it's satire, and a dam
Re: (Score:2, Insightful)
It's the other way around. Anti-feminists randomly start blaming everything on feminism and SJWs in every thread. Rocket exploded on launch? It's because of pussification and millennial snowflakes being unable to handle the real world, and if only Real Men had erected the damn thing it would have entered orbit like they did in the good old days.
Oh no.... (Score:5, Insightful)
Google is ditching C! Oh my ... Wait.. what... you mean, "ditching C in their Go language platform". Uh... well.. duh, who actually would think they'd use C in their own new shiny language toolchain, that's like anti-advterisement.
Oversensational header, disappointing....
Re:Oh no.... (Score:5, Interesting)
I agree that it's more like a balloon popping news than revolutionary news. And in any case - there's still C and assembly somewhere.
When I look at the code examples my opinion is that it reminds me of a mix of C/C++ and Pascal. Not necessarily bad, just an observation.
What I think lacks when it comes to the Go compiler are the number of platforms supported, some are missing, like ARM and MIPS. Hopefully that will come as well.
How about translation tools - something that can convert Java to Go?
Re: (Score:2)
We build go code for ARM, so it can't be that missing. Don't know about MIPS though.
Re: (Score:2, Informative)
Yes, the headline is a bit oddly phrased.
Getting to the self-hosting [wikipedia.org] stage is a major milestone in any programming language.
Before that it is just a novelty or support language.
"With version 1.5, the Go toolchain is now self-hosting!" would have been a more descriptive and less flamebaity headline.
Re: (Score:3)
Uh... well.. duh, who actually would think they'd use C in their own new shiny language toolchain
The reference implementation of Python, a different language that's been around as long as Linux, is still written in C. So go figure.
Re: (Score:2)
IIRC there is a Python compiler, it's just that it compiles to "p-code" (i.e., code for the Python virtual machine).
OTOH, lots of Python has both a Python reference implementation, and a C version that's used to speed up execution.
Your basic point is still correct, that Python is not really optimized for speed, except in places. The design is intended to be "fast enough". (Whether it is or not depends on what you're doing. The libraries tend to be optimized for speed.) S.a. Pypy.
Finally! (Score:5, Interesting)
It's about time. Wait ... is it? What was so bad about C? Was there an active campaign to eliminate it? Were they behind on some schedule or hanging out against the wider desire to ditch C?
Why are we finally ditching something that worked?
Re:Finally! (Score:5, Interesting)
Builds in Go 1.5 will be slower by a factor of about two. The automatic translation of the compiler and linker from C to Go resulted in unidiomatic Go code that performs poorly compared to well-written Go. Analysis tools and refactoring helped to improve the code, but much remains to be done. Further profiling and optimization will continue in Go 1.6 and future releases. For more details, see these slides and associated video.
And replacing it with something slower.
Re: (Score:2)
Builds in Go 1.5 will be slower by a factor of about two.
Go! Back! (I should go check TDWTF forums to find some threads about this.)
Re: (Score:2)
Any plausible improvement for C would require memory management and extra run-time checking.
Maybe a different hardware model tuned to multithreading would get a faster language.
Re:Finally! (Score:5, Interesting)
They removed C code from the runtime so they had one language to reason about in the garbage collector. It makes updating the pointers on the stack easier among other things: Go 1.5 includes a new moving mostly concurrent garbage collection that wouldn't have been practical with random runtime c code on the call stack. It also makes it easier to contribute to the project (less languages involved), and removed the need for maintaining their modified C compiler that worked with their ABI and stack management.
So no, none of the reasons they removed C were because C is bad (Though they would also claim it has its issues). It mainly was problematic to have a second and non memory safe language involved in the runtime. The reasons for removing it from the compiler are less clear cut, but some of the same reasons apply.
Re: (Score:2, Interesting)
Compared to C++, C is a clumsy anachronism. Speaking as a C expert and someone who still writes a lot of it. C is bad news for maintainability and abstraction. Those who insist on denying that end up with sprawling haphazard embarrassments like GTK and Enlightenment.
In any case, the limitations of C are not the issue. The issue is, if a systems language is inappropriate for implementing a compiler for itself, then does it deserve to be taken seriously? It is a matter of proving the worth, power and efficien
Re: (Score:3, Interesting)
Re: (Score:2)
Re: (Score:2)
C++ in the early day
Re: (Score:2)
Re: (Score:2)
If you think that decent memory management is the only reason to use c++ then you certainly do not get it.
Re: (Score:2, Informative)
Compiling itself is a major milestone for many languages. C itself passed that point fairly early on, going from being written in BCPL to pure C, at which point a lot of other code started being translated too. It's a good demonstration of the language, as much as anything.
As for C vs. C++, I think you have it backwards. C is an excellent system programming language and nothing else has managed to supersede it. All major operating systems are written in C, including Linux, the BSD/MacOS kernel and the Windo
Re:Finally! (Score:5, Insightful)
All major operating systems are written in C, including Linux, the BSD/MacOS kernel and the Windows kernel.
And the common thing about those is all of them are OLD. Sure there are new parts, but they were all started a very, very long time ago when C did have major advantages over C++ (no standard C++, slower code, buggy compilers significantly lagging the standard when it finally arrived). Of course in the mean time, there have been 3 major language versions (98, 11, 4), one minor one (03), and a bunch of TS (<3 concepts! finally!), not to mention truly vast improvements in compiler performance, and the final arrival of two production quality open source compilers which are generally in advance of the standards, not behind.
Back in '94 when they tried compiling Linux in C++ and it went slower, well, then C had advantages over C++. That was over two decades ago. The world has moved on since then.
As we've seen with GCC who have been undergoing a heroic effort, it's a lot of work to move an old project from C to C++, and you have to have the devs on board (given Linus's major blind spots he'll never do that for Linux). There's also very little advantage initially because most of the code is idiomatic C, and getting good paramaterised containers, type safety, leak safety etc etc is a lot of very slow work. It's not merely enough to switch your compiler, to get the full advantages you more or less have to rewrite the entire project from the inside out.
And as for OSX, well, parts of the kernel are written in C++, and in fact the device driver layer supports it. It's a subset, which doesn't allow any of the bits requiring significant support from the runtime (exceptions, RTTI/multiple inheritance) and bizarrely, templates which are basically invisible at that level.
C++ is a terrible language for most purposes. No good for system programming, and not great for application development. Later languages vastly improve upon it.
Many of the big "applications" on my machine that I regularly use are written in C++. There's firefox, Eagle CAD, Libreoffice, IAR embedded workbench, inkscape, okular not to mention GCC 5. Oh and the JVM of course. And unity (the game engine) is itself written in C++ even if most of the game code is C#. Oh and llvm. I almost forgot about that!
In the case of Firefox, C++ is apparently so far superior to everything else that the only way to move off C++ was to develop a completely new language, because nothing out there was worth moving to.
Fortunately, Rust is written by people who seem to know, understand and like C++, which means it has a much greater chance of actually being better, unlike all the supposed C++ replacements which are mostly much worse except for some small domain.
No good for system programming
It's excellent for systems programming. It's better than C in pretty much every single regard[*].
Later languages vastly improve upon it.
Such as? One of the nice things about watching a talk by Stroustrup is he has a bunch of pretty pictures about where C++ is used. C++ is on mars. And there's a reason you haven't heard about the Emma Maersk drifting around unpowered in the Pacific ocean (the ECU for the Flex96-C engine is written in C++). And there's also a reason you're almost certainly reading this post in a browser written in C++.
And not one of those other vastly improved languages.
So finally a challenge for you and everyone who modded you as insightful:
I like C++, but I could bend your ears for days about what's wrong with it, and why it's a pain in the ass in a variety if interesting and distressingly subtle ways. If there are vastly superior languages out there for what I do, then let me know, because I'd love to use them.
[*] The only regard in which it's not is that a few obscure platforms don't have a C++ compiler.
Re: (Score:2)
C++ drawbacks:
1. The language has a long history, which by its nature means there is tons of older C
Re: (Score:2)
Go as a C++ replacement should be fine unless you need manual memory management.
No, not really. Go as a C++ replacement for writing server side RESTish sort of code would be fine. As a general C++ replacement not so much.
Go has much weaker abstraction mechanims, so you can't build your own datastructures that work like the builtin ones. Unless your problem happens to map well on to slices and maps, it's just not very good. I'm currently writing quite a bit of computer vision code in C++ (and the operator ov
Re: (Score:2)
I would assume that for developing most code, unless you're hitting specific performance-related problems you need to debug, you do most of your compiling without the optimizer. Once it's more or less feature complete, then you have a fe
Re: (Score:2)
Self-regurgitating assembly with macro's.
/garbage collected lang is available and supported in vi/emacs/whatever
I could try and explain, it's just too powerful and expressive.
Its purity and speed would leave you alone and crying for mommy.
Variadic pointers and memory strategy? Who cares, assembly INVENTED virtual endless memory.
Of course, when things need to get done, you fetch any script-
Re:iostream is a pig (Score:5, Insightful)
But what are the advantages of this subset over C?
Better encapsulation, better type safety. better expressivity, much, much cleaner and more typesafe generic code. Oh and finally, C++ does things like virtual functions in a more memory efficient way that the idiomatic C way on modern processors.
And of course there's constructors which maintain your class invariants for you. Every time you declare a struct variable in C and then initialise it, you're writing boiler plate that C++ does for you. And every line of code is a potential bug. Having fewer lines means generally fewer bugs.
That and machines without enough memory to hold "significant support from the runtime".
The arduino environment is C++ and runs on an 8 bit Atmel with almost no RAM. I'm using IAR C++ workbench on some diddy little 8051 radio core with as few k.
All you've managed to do is to prove that part of the C++ standard library doesn't work well on tiny devices. You also proved that C++ is just fine, by running a C++ program with a different library to do the same kinds of tasks.
But yes, iostreams is not the highest point of the C++ standard.
Re: (Score:2)
Of all the things which I would ditch from C++ for embedded systems programming, iostreams is first against the wall. It's not just a pig, it's also a shameful show-off example of "stupid overload tricks".
Of the things I love the most, it's how virtual functions compare to using function pointers. The syntax for C function pointers is mind-bending. Virtual functions replace the best use case for function pointers, with a straightforward syntax, and the vtable means they all get assigned together for a give
Re: (Score:2)
It's not really a question of it will compile to faster code, or how old the OS is. It's more fundamental. You don't want garbage collection going on in your kernel, for example. Especially if your kernel needs to run on systems with limited resources, or where real-time/low latency response is required. So if you rule out anything that uses garbage collection, there goes half of C++. Now you have to worry about programmers accidentally using those banned features too.
Wait what? C++ doesn't have garbage col
Re: (Score:2)
C++ is a terrible language for most purposes. No good for system programming, and not great for application development.
Well, that's one person's opinion. I mean, it's completely wrong, but it's an opinion.
Re: (Score:2)
C is an excellent system programming language and nothing else has managed to supersede it. All major operating systems are written in C, including Linux, the BSD/MacOS kernel and the Windows kernel.
Both the XNU kernel (OS X and iOS) and Windows kernel are written, in part, in C++. A subset of C++, in both cases, to be fair, but C++ all the same.
Re: (Score:2)
All major operating systems are written in C, including Linux, the BSD/MacOS kernel and the Windows kernel.
The Symbian kernel is written in c++, proving that that there is no technical obstacle. The real reason that (nearly) all major kernels are written in C is that these kernels predate the time when c++ was suitably mature. Things have changed. OSv [wikipedia.org] is an example of a new kernel written in c++. A bit simplistic at the moment, but then so was Linux when it arrived on the scene.
Re:Finally! (Score:5, Insightful)
I agree the issue here isn't ditching C so much as having a self hosting language. Self hosting has all sorts of advantage the ones you point out are the biggest.
With a youthful language often new features and revision appear in the reference compiler first. If designing something like a new syntax or language construct a good hit you are doing something right is when its strait forward to express within the existing language. When it comes time to implement and you are working in the native language if you find you can't express the new construct easily it might mean the relationships and orthogonality are not as clean as you think.
I disagree that is bad new for maintainability and abstraction. There are plenty of very large very old C projects that are perfectly maintainable. Its a question of discipline mostly and selecting right abstractions. GTK is a mess because its an objected oriented library written in a procedural language. OO isn't the only possible design choice even though that is all many people are taught today. Had a procedural abstraction been chosen I am sure it would be fine.
Re: (Score:2)
Actually GTK+ is quite maintainable, both in terms of the toolkit development itself, and app development. The patterns it uses are easily seen, and replicated, and also easily automated. For example, to gobject-based toolkit code is often automatically generated from more abstracted definition files. GTK+ is definitely not an embarrassment, nor is it haphazard.
The biggest problem with C++ is language bindings, and also a the lack of a standard ABI. Unless things have radically changed recently, I canno
Re: (Score:2)
Ahh, it looks like GCC development is slowly moving to C++.
Re: (Score:2)
I am no fan of C++, but to be fair, the language has a changed tremendously in the years since Trolltech first wrote their own preprocessor. Does it persist out of necessity or inertia?
Re: (Score:3, Insightful)
Necessity.
There's nothing out there with the same combiation of performance and expressive power. nd frankly for modern C++14 code, it feels like writing in scripting laguages half the time except that it goes FAST.
Re: (Score:3)
Re:Finally! (Score:5, Insightful)
Yeah, you try using a garbage-collected language in large embedded systems with real-time requirements. The unpredictable nature of the garbage collector really screws around with you. People have been claiming to have deterministic garbage collectors forever too, but usually their overhead makes them not worthwhile, too.
C++ is (well, can be) maintainable and quite appropriate for real-time use as long as you use an appropriate subset (exceptions are usually a no-no, for instance), and you get some higher-level abstractions that are very, very useful and that generally compile to fast, efficient machine code.
Re: (Score:2, Troll)
Re: (Score:3)
That's what we call "C".
Yes, because templates compile in C just fine.
I also love all the really helpful algorithms you can get by including algorithm in C.
Re: (Score:2, Insightful)
Linus has no experience with c++, and until he does get some experience, he will maintained the c++ ban. Remember, Linus also banned version control for many years. Finally, he got it, and became a great proponent.
Re: (Score:2)
Now we're seeing the likes of Swift, Rust, Go which allow developers to enjoy the speed of C/C++ but without as many pitfalls. They also tend to be more terse languages, produce more meaningful error messages and compilation is faster. These things s
Re: (Score:2)
Re: (Score:2)
My question wasn't generic, it was rather specific. Go was written in C. What was the big drive and from the sound of the headline an urgent and repeatedly delayed push to write it in something else that warrants the use of the word "Finally".
Re: (Score:3)
Re: (Score:2)
Hang on a second... BASH ?
You mean posixly correct shell surely !
Re: (Score:2)
No, BASH. If you're going to go ugly, go all the way.
Re: (Score:2)
C compilers are more complex than higher-level language compilers? Ok buddy...
Re: (Score:3)
The biggest problem with C is that it doesn't have strings or arrays.
In the future, it will be taught as an historical example of slipshod, primitive language and compiler design.
Agreed, but I'd also argue that C was pretty nice for its time, as a kind of portable assembler. To me, C is a model of a simple CPU/computer, and it's no longer a good fit for our modern multi-CPU machines, with vector types and everything.
With higher level languages, it's easy to deal with vector and matrix types, where components are assumed independent of each other for automatic parallelization. This is how the scientific computing community managed parallel computing way before the "multicore" craz
Re: (Score:2)
And yet it worked, so what was the driver to port away from C in this specific case?
Being primitive is not a reason to abandon something if primitive did the job.
Re: (Score:2)
The biggest problem with C is that it mirrors how computers work.
You can complain that it doesn't do things the nice and easy way you'd want, but unfortunately the computer you're using doesn't do it that way either. Now you can wrap those constructs with something easier to use, but you've just added a layer of complexity over the top. Insist on more easy-to-use-features (eg garbage collection) and you end up with something really slow and cumbersome for a computer to process.
Fortunately we have computers
Re: (Score:2)
Re: (Score:2)
No generics (Score:5, Insightful)
Re: (Score:2)
I expect that the Go compiler written in Go compiles slower than the Go compiler written in C, however the Go-in-Go compiler is undoubtedly more loved by the devs, which counts for a lot. Over time, it is probable that the optimizer will develop faster in the Go-in-Go version, which if true, means that the Go-in-Go version will ultimately be superior.
Re: (Score:2)
Generics are a touchy subject, they make the code awful but they save you from writing more of it. As a side note C++ does just that with its generics implementation (the compiler creates a different code for each class that uses the generic class) that is why C++ compiler is slow. Java does not do that in its generics implementation, but the Java way has its own trade-offs.
Re:No generics (Score:5, Informative)
Underscore is ignore. for loops operate in a key/value fashion, so:
for key, value := range values
gives you:
0, 1
1, 2
2, 3
etc.
In practice this turns out to be very convenient. You can switch storage between slices and maps without altering your code (both use the same key, value := range x form), and I know that your example above doesn't modify anything stored in values without having to look past the loop declaration.
Re: (Score:2)
I can look at a snippet of C code and figure out what it does, but any snippet of C++ code is likely gibberish without looking at numerous macros, class definitions, and documentation for subsets of the language I've never seen before.
Nonsense. You hate C++ because you don't know it, which is presumably because you've never taken the time to learn it. It's not that hard, and it's vastly superior to C. Best thing : you never have to use macros again.
Re: (Score:3, Insightful)
Re: (Score:2)
Your imagined problem exists with C functions that uses handrolled (or macro rolled) vtables just the same.
Re: (Score:2)
Quick, what does "A=B;" do in C++ without checking through tons of class definitions and functions!
Quick! What doea a.assign(b) do in any other language? Without checking the definition of a or b in those languages, of course?
Don't know? Well obviously all those language suck.
Hopefully you see now why your point is silly.
Re: (Score:3, Interesting)
I can look at a snippet of C code and figure out what it does, but any snippet of C++ code is likely gibberish without looking at numerous macros, class definitions, and documentation for subsets of the language I've never seen before.
Nonsense. You hate C++ because you don't know it,
Neither do you, apparently. C++ (the language, not the library) is the largest programming language in existence. Nothing is larger. If you think you know C++ then you're way too dangerous to be on a team. The best C++ devs I've managed were those who openly acknowledged the fact that it is too large and too complicated to be used without sticking to a strict subset of some sort.
Re: (Score:2)
The C++ devs you've worked with you claim are "the best" probably are the ones trying to use C++ as C with classes or learned C++ from univer
Re:No generics (Score:4, Informative)
Neither do you, apparently. C++ (the language, not the library) is the largest programming language in existence. Nothing is larger.
[citation needed]
A clue: there is no citation because you're making it up.
So let's consider languages where actual formal specifications exist because they have to be written in excricuiating detail because the asusmption there is no reference implementation that people can refer to if in doubt.
Java spec (788 pages, for the language only):
https://docs.oracle.com/javase... [oracle.com]
C++ spec (425 pages, for the language only):
http://open-std.org/jtc1/sc22/... [open-std.org]
C# circa 2006 language specification (553 pages for the language only)
http://www.ecma-international.... [ecma-international.org]
So there you go, definitive proof that there are bigger languages than C++.
Huh, looks like ADA and Fortran 2008 have longer specs too.
So there you go, there are 4 standardised languages I've given you which have longer specifications than C++.
The best C++ devs I've managed were those who openly acknowledged the fact that it is too large and too complicated to be used without sticking to a strict subset of some sort.
Given your propensity to simply make shit up about C++ [citation: see above], your statements lack credibility.
Re:No generics (Score:5, Informative)
Neither do you, apparently. C++ (the language, not the library) is the largest programming language in existence. Nothing is larger.
[citation needed]
A clue: there is no citation because you're making it up.
So let's consider languages where actual formal specifications exist because they have to be written in excricuiating detail because the asusmption there is no reference implementation that people can refer to if in doubt.
[snipped...]
So there you go, there are 4 standardised languages I've given you which have longer specifications than C++.
Well Done. Now, where exactly did I claim that the english-language specification for C++ is larger than the english-language specification for other languages? I claimed that the language "C++" is larger, but only a moron would use number of pages of english text as a measurement.
The C++ language, as defined by its grammar rules in BNF, is larger than any other programming language, as defined by their respective grammar rules in BNF. This is well-known and is taught in almost every introductory compiler class I've reviewed.
Go ahead - look it up. Here's the BNF rules for java, 48 general rules for the programmer to remember, very few depending on context [unige.ch]. Here's the one for C++, 80+ rules [nongnu.org] for the programmer to remember, many of them depending on context.
I'm not going to do your homework and search for the grammar rules for the other languages which you claim are bigger than C++; just refuting the one you listed is enough for you to ask yourself "Whats a BNF and why does it determine the size of a language?" If you do not get the relationship between "this is how much language a programmer needs to keep in their head to program" and "this is how large the BNF for the language is" then I'm afraid you are beyond my (and most professional) help.
(Hint: maybe register for some CS course in programming languages and compiler design? Or write a compiler or two yourself? You would do yourself a favour and learn enough to not use "number of pages in spec" as a measurement of a languages size (and/or complexity, but I didn't even start on that))
Given your propensity to simply make shit up about C++ [citation: see above], your statements lack credibility.
Your nerdrage whenever you perceive an attack on "your" language is laudable, however I suggest you stop being so unreasonably attached to what is only a programming language (albeit a very large one). C++ is what it is. Your insults won't change that.
IOW: Go is now self-hosted (Score:5, Informative)
Having the compiler for a language written in itself is what pretty much every serious compiler is expected to do. Its called being self-hosted [wikipedia.org], and a compiler is generally not considered very mature [stackexchange.com] until it does this.
So basically what this is saying is that Go has started to grow up.
Re: (Score:2)
I think the idea is that you use old Go to bootstrap new Go, just as you use old g++ (prior to 4.8 when it became self-hosting) to bootstrap new g++.
Can we Kickstart a betting pool? (Score:4, Funny)
On when Google will suddenly back out of this language project - or both of them, as the case may be - and just go with Swift?
Re: (Score:2)
One size doesn't fits all. I'm happy they didn't ditched any of them.
They aren't "dividing" anything (Score:2)
Dart and Go are being developed by two completely separate groups of people, and they've been all along.
Re: (Score:3)
Re: (Score:2)
To me Dart is "Dual Asynchronous Receiver/Transmitter", like the Z-80 DART [cpcwiki.eu].
Re:Sucks they're dividing efforts between Dart &am (Score:2)
I guess it's not too bad. Programmers tend to be very active online, so the languages tend to get high pagerank. But still, if I were to create a language, I'd going to go for either a really obscure word, or a misspelling. I think searchability should be considered a feature.
Re: Sucks they're dividing efforts between Dart &a (Score:2)
A modern computer language should have a unique name. On this basis I predict that Clojure will prevail, and Go and Dart will fade into obscurity. ECMAScript will be fine too, though when I search for Javascript, I always get hits for this weird language called jQuery and Google Search, as it is getting worse and worse, no longer recognizes the dash as an 'exclude' filter.
Re: Sucks they're dividing efforts between Dart &a (Score:2)
Microsoft at one point came out with 'web pages'. The name instantly doomed it. You couldn't search for it at all
Re:Sucks they're dividing efforts between Dart &am (Score:5, Informative)
Dart is an awesome language, and we have nearly a million lines of it running both client-side web and server-side. It is a spectacular language. Go is probably better on the server side, but you can't ignore the web. Imagine how much nicer Dart could be if they weren't distracted by Go.
Google has over 50,000 employees. They can do more than one thing at a time.
Re:Sucks they're dividing efforts between Dart &am (Score:3)
A lot of people on this thread evidently think the jury is still out on that.
Re: Sucks they're dividing efforts between Dart &a (Score:3)
Yea, that's almost 2000 persons per letter of the Alphabet.
Re:And 400 Linus Clones Cried Aloud (Score:5, Informative)
Someone isn't an embedded systems programmer. Many many embedded systems use C because its fast, flexible and flipping works.
Re: (Score:3)
As an actual embedded systems programmer, I can tell you that most of them use C because they can't grok (or even actively hate) C++. Sure, you don't want to go nuts with dynamic allocation (a bad thing in the small-system embedded systems world), but a subset of C++ [wikipedia.org] * can be quite effecitvely used [mbed.org] for embedded systems programming. Just limiting yourself to C99+classes+virtual method functions and static/auto scope objects can really improve the quality of your code over C.
* Yes, EC++ as a specific C++ di
Re: (Score:2)
But C? Who da ELL uses that anymore? C++!! Notice the PLUS PLUS? That's double plus good!! Google wants the world to drink its coke. That is all. Men won't care about GO-ogle. Women? Numbers too small and, yes, Helen Reddy, very easy to ignore.
The GNOME desktop environment is too a large extent written in C, and so are many applications that target the GNOME environment.
Re: (Score:2)
Shared libraries are more trouble than they're worth. Having a go compiled executable be entirely standalone (OS calls notwithstanding, I suppose) is an advantage in my opinion.
Re:Can Go still not load shared libraries? (Score:5, Insightful)
Static linking might be semi-adequate for stuff that you compile at home, but for any code that's distributed using static is a sabotage. For example, when there's a bug (security or not) in a library, you can't avoid recompiling the world. That's why distributions go for 100% dynamic linking, and why they dislike current Go.
Re: (Score:2)
Static linking might be semi-adequate for stuff that you compile at home, but for any code that's distributed using static is a sabotage.
I think you've got that backwards. Dynamic linking is fine for stuff you compile at home, but for any code that's distributed, using dynamic linking will often cause your binary to *just not work* on another system.
Missing a shared library? Which package does it come in? Oh crap, that package requires dependencies I don't have, or are the wrong version, etc.. Or you have the shared library, but it is a different version, and the size of a structure or something changed, or a variable doesn't exist an
Re:Can Go still not load shared libraries? (Score:5, Informative)
The Go 1.5 release includes preliminary support for shared libraries. You can now build your Go programs to use shared libraries, on x86_64 GNU/Linux. You can also build shared libraries that can be linked into a C/C++ program, on several platforms.
Go has had an FFI for calling into C from the beginning: https://golang.org/cmd/cgo [golang.org] .
For a language thats supposed to replace C (Score:2)
... and be used on server side development, support for shared libraries should have been built in from version 0.1.