Allegro.cc - Online Community

Allegro.cc Forums » Off-Topic Ordeals » The Go Programming Language (by Google)

This thread is locked; no one can reply to it. rss feed Print
 1   2   3   4 
The Go Programming Language (by Google)
bamccaig
Member #7,536
July 2006
avatar

Why would Google name it "Go"? Sure, it's catchy and has a similarity to their name but I can't even search for the board game Go. C was bad enough. However, not nearly as many people just start using the letter C when talking but Go is everywhere. I'd prefer to search for something in another language rather than try to find it done in Go.

It's Google. They can add support into their engine for searching for their programming language. :P C++ works and that's probably because of custom rules.

Vanneto
Member #8,643
May 2007

So, what other thing does the term "C++" refer to thats as popular as the language? I would really like to know, as I see no reason why custom rules are needed.

In capitalist America bank robs you.

bamccaig
Member #7,536
July 2006
avatar

The '+' character is generally not something search engines support searching for. In fact, Google uses it to indicate that an exact match should be found for a word (i.e., +word). I seem to remember a time when searching for C++ didn't work well and you got millions of results with the letter C in them[1]. Searching for the Go programming language will probably require the word programming in the criteria, but should otherwise match (especially if they build in custom support for it).

References

  1. Or maybe I'm crazy. Meh.
Goalie Ca
Member #2,579
July 2002
avatar

axilmar said:

Why do all things things need a VM? they don't.

Well... everything aside, VM's are a way of the future because they will be the best performers. Pretty soon we'll have a mess heterogenous cores and systems and we will no longer be able to optimize binaries for a specific core configuration like we do now. Hell, they might even have different ISA's all together.

-------------
Bah weep granah weep nini bong!

ImLeftFooted
Member #3,935
October 2003
avatar

Goalie Ca said:

VM's are a way of the future because they will be the best performers.

Wait.. is this sarcasm? I've never heard someone say they liked VMs for their performance...

I imagine they would get worse as the cores start to multiply.

edit
Does Go have a VM?

Peter Wang
Member #23
April 2000

Goalie Ca said:

Pretty soon we'll have a mess heterogenous cores and systems and we will no longer be able to optimize binaries for a specific core configuration like we do now. Hell, they might even have different ISA's all together.

Given massively multi-core machines on every desk, the need for heterogeneous clusters would seem to decrease.

Go does not have a VM.

Goalie Ca
Member #2,579
July 2002
avatar

Given massively multi-core machines on every desk, the need for heterogeneous clusters would seem to decrease.

Well, consider that some of these cores in your desktop are for number crunching and others are for general processing. These number crunchers may or may not be on a GPU. Also, some cores will be optimized for power and others for performance. Point is, JIT'ing gives a lot of advantages. Apple is already leading the way and use something like this for its graphics routines and they are switching away from GCC to LLVM for a reason.

-------------
Bah weep granah weep nini bong!

Kibiz0r
Member #6,203
September 2005
avatar

So, when does Allegro get a Go port/binding? :D

I'm happy to help out on one.

ImLeftFooted
Member #3,935
October 2003
avatar

Doesn't this just make you want to invent a language called Stop?

Peter Wang
Member #23
April 2000

Kibiz0r said:

So, when does Allegro get a Go port/binding?

I will do hello world on the weekend, and you can do the rest ;)
http://code.google.com/p/go/source/browse/misc/cgo/gmp/gmp.go?r=release

Sevalecan
Member #4,686
June 2004
avatar

Let me be the first to say: I don't care.

From what I've seen this language isn't going to do anything for me that any existing language doesn't do already. I can only imagine that in spite of any useful features they MIGHT have that they'll make some other part deficient that works perfectly fine in another language.

Or maybe I just hate how everyone is always so fanatic about the latest greatest language for what seems to me to always end up unjustified. :P

lol

TeamTerradactyl: SevalecanDragon: I should shoot you for even CONSIDERING coding like that, but I was ROFLing too hard to stand up. I love it!
My blog about computer nonsense, etc.

axilmar
Member #1,204
April 2001

Goalie Ca said:

Well... everything aside, VMs are a way of the future because they will be the best performers. Pretty soon we'll have a mess heterogeneous cores and systems and we will no longer be able to optimize binaries for a specific core configuration like we do now.

That's only valid for situations where vector processing is required. Most algorithms cannot be parallelized, so the need for a VM is minimal, if non existent. Parallelization of vector data can already be achieved optimally by using CUDA or OpenCL or whatever language exists that is complementary to C for this purpose.

The real problem is dependency management. I'd rather have my application not have any external dependencies, i.e. be a single executable, rather than not being optimized 100% for the target platform. If operating systems come with VMs preloaded or manage automatically VMs, then I am ok with it. This happens as we speak with operating systems that run in a virtual environment; you may also consider x86 assembly as the bytecode for x86 code (since each CPU decodes x86 differently to its internal real assembly language).

If we come to a situation you describe, then operating systems will have a VM installed by default, so the problem of managing the VM dependencies will go away.

Another solution would be an automated dependency manager (that does not interact with the user i.e. it discovers new versions and dependencies automatically, and installs updates automatically).

And then, there are real time applications. No VM could possibly exist for them, because their execution times should be predictable.

Kibiz0r
Member #6,203
September 2005
avatar

I will do hello world on the weekend, and you can do the rest ;)
http://code.google.com/p/go/source/browse/misc/cgo/gmp/gmp.go?r=release

Sounds good, I'll get an SVN set up.

Peter Wang
Member #23
April 2000

There's a couple of hurdles right now. First, the C binding program doesn't understand opaque types, e.g. typedef struct ALLEGRO_BITMAP ALLEGRO_BITMAP;, which we use a lot of. There's a patch in the bug tracker (#126).

More importantly, Allegro uses thread-local storage heavily and Go may multiplex goroutines onto its thread pool as it likes. Allegro will be unusable until there is a way to pin goroutines to specific threads, or something like that.

BAF
Member #2,981
December 2002
avatar

Looks like some bastardized Java/C++/whatever-else hybrid.

Peter Wang
Member #23
April 2000

Turns out we can pin goroutines to OS threads. Attached the start of a binding (place in go/misc/cgo). I probably won't work on it more but feel free to pick it up if you like.

Kibiz0r
Member #6,203
September 2005
avatar

Attached the start of a binding (place in go/misc/cgo).

Did you mean to attach it to your post? Cuz it definitely isn't in the A5 repo.

I just made a repo for this at http://svn.lessthanthree.vg/allegro_go. You have commit access, PMing you your pass.

Peter Wang
Member #23
April 2000

Attached for real now.

Tobias Dammers
Member #2,604
August 2002
avatar

Haven't looked too deeply into it, but it appears the goal is to make a language that is as comfortable for the programmer as C# or Java (or even more comfortable), while still being a fully compiled language suitable for writing system-level code.

---
Me make music: Triofobie
---
"We need Tobias and his awesome trombone, too." - Johan Halmén

bamccaig
Member #7,536
July 2006
avatar

Perhaps what needs to happen is language designers need to realize that languages are just languages and should be officially implemented in virtual machines and native compilers, so the user is free to use whatever is most appropriate. Maybe it'll take designing a language with abstraction from the implementation in mind. Maybe that's Go, but maybe not.

kazzmir
Member #1,786
December 2001
avatar

bamccaig said:

Perhaps what needs to happen is language designers need to realize that languages are just languages and should be officially implemented in virtual machines and native compilers,

Virtual machines and native compilers are orthogonal to each other. You probably know that Java and .NET have JIT (just-in-time) compilation but that compilation could just as easily take place before the process is invoked.

bamccaig
Member #7,536
July 2006
avatar

Yeah, but it should only need to happen once. What's the point in going through the JIT process every time you run the program? If the program isn't changing then it should remain the same no matter how many times you JIT it so it might as well just stay compiled and just run natively.

Billybob
Member #3,136
January 2003

bamccaig said:

If the program isn't changing then it should remain the same no matter how many times you JIT it so it might as well just stay compiled and just run natively.

.NET caches JIT'd binaries.

bamccaig
Member #7,536
July 2006
avatar

There'd still be overhead in checking and loading the cache. Unnecessary overhead. It's a nice distribution model for average users, assuming the JIT is optimized for the platform, but that's no reason not to support straight to native compilation from the beginning.

Thomas Fjellstrom
Member #476
June 2000
avatar

LLVM is more fun. It will actually re/further-optimize the program as it runs, every time it runs. So as you use it, llvm learns how a given program is used, and optimizes for its environment. Its rather quite genius. And it does it with plain C/C++ code. It could also do the same for higher level languages if they supported LLVM (when ever I get around to mine, it will almost certainly support LLVM).

--
Thomas Fjellstrom - [website] - [email] - [Allegro Wiki] - [Allegro TODO]
"If you can't think of a better solution, don't try to make a better solution." -- weapon_S
"The less evidence we have for what we believe is certain, the more violently we defend beliefs against those who don't agree" -- https://twitter.com/neiltyson/status/592870205409353730

 1   2   3   4 


Go to: