|
|
| The Go Programming Language (by Google) |
|
bamccaig
Member #7,536
July 2006
|
Ben Delacob said: 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. -- acc.js | al4anim - Allegro 4 Animation library | Allegro 5 VS/NuGet Guide | Allegro.cc Mockup | Allegro.cc <code> Tag | Allegro 4 Timer Example (w/ Semaphores) | Allegro 5 "Winpkg" (MSVC readme) | Bambot | Blog | C++ STL Container Flowchart | Castopulence Software | Check Return Values | Derail? | Is This A Discussion? Flow Chart | Filesystem Hierarchy Standard | Clean Code Talks - Global State and Singletons | How To Use Header Files | GNU/Linux (Debian, Fedora, Gentoo) | rot (rot13, rot47, rotN) | Streaming |
|
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
|
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
-- acc.js | al4anim - Allegro 4 Animation library | Allegro 5 VS/NuGet Guide | Allegro.cc Mockup | Allegro.cc <code> Tag | Allegro 4 Timer Example (w/ Semaphores) | Allegro 5 "Winpkg" (MSVC readme) | Bambot | Blog | C++ STL Container Flowchart | Castopulence Software | Check Return Values | Derail? | Is This A Discussion? Flow Chart | Filesystem Hierarchy Standard | Clean Code Talks - Global State and Singletons | How To Use Header Files | GNU/Linux (Debian, Fedora, Gentoo) | rot (rot13, rot47, rotN) | Streaming |
|
Goalie Ca
Member #2,579
July 2002
|
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. ------------- |
|
ImLeftFooted
Member #3,935
October 2003
|
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 |
|
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
|
Peter Wang said: 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. ------------- |
|
Kibiz0r
Member #6,203
September 2005
|
So, when does Allegro get a Go port/binding? I'm happy to help out on one. --- |
|
ImLeftFooted
Member #3,935
October 2003
|
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
|
|
Sevalecan
Member #4,686
June 2004
|
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. 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! |
|
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
|
Peter Wang said: I will do hello world on the weekend, and you can do the rest 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
|
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
|
Peter Wang said: 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
|
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. --- |
|
bamccaig
Member #7,536
July 2006
|
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. -- acc.js | al4anim - Allegro 4 Animation library | Allegro 5 VS/NuGet Guide | Allegro.cc Mockup | Allegro.cc <code> Tag | Allegro 4 Timer Example (w/ Semaphores) | Allegro 5 "Winpkg" (MSVC readme) | Bambot | Blog | C++ STL Container Flowchart | Castopulence Software | Check Return Values | Derail? | Is This A Discussion? Flow Chart | Filesystem Hierarchy Standard | Clean Code Talks - Global State and Singletons | How To Use Header Files | GNU/Linux (Debian, Fedora, Gentoo) | rot (rot13, rot47, rotN) | Streaming |
|
kazzmir
Member #1,786
December 2001
|
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
|
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. -- acc.js | al4anim - Allegro 4 Animation library | Allegro 5 VS/NuGet Guide | Allegro.cc Mockup | Allegro.cc <code> Tag | Allegro 4 Timer Example (w/ Semaphores) | Allegro 5 "Winpkg" (MSVC readme) | Bambot | Blog | C++ STL Container Flowchart | Castopulence Software | Check Return Values | Derail? | Is This A Discussion? Flow Chart | Filesystem Hierarchy Standard | Clean Code Talks - Global State and Singletons | How To Use Header Files | GNU/Linux (Debian, Fedora, Gentoo) | rot (rot13, rot47, rotN) | Streaming |
|
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
|
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. -- acc.js | al4anim - Allegro 4 Animation library | Allegro 5 VS/NuGet Guide | Allegro.cc Mockup | Allegro.cc <code> Tag | Allegro 4 Timer Example (w/ Semaphores) | Allegro 5 "Winpkg" (MSVC readme) | Bambot | Blog | C++ STL Container Flowchart | Castopulence Software | Check Return Values | Derail? | Is This A Discussion? Flow Chart | Filesystem Hierarchy Standard | Clean Code Talks - Global State and Singletons | How To Use Header Files | GNU/Linux (Debian, Fedora, Gentoo) | rot (rot13, rot47, rotN) | Streaming |
|
Thomas Fjellstrom
Member #476
June 2000
|
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). -- |
|
|
|