I never understood this sentiment. C isn't assembly exactly because there isn't necessarily a direct correlation between the instructions the programmer writes and the resulting machine code. To me, this is as contrived as the idea that Javascript is "LISP in Java's clothing"
In what possible sense can it be described as an assembler?
Unless I missed it, it is surprising the lack of benchmarks or mentioning how compile speed compares with the previous iteration.
I'm not saying it would be necessary slower than a compiler written in C, if they wrote the more critical parts in assembler, but you would think compiling speed would be one of the outstanding discussion points, after a major rewrite.
> Generate machine descriptions from PDFs (or maybe XML).
> Will have a purely machine-generated instruction definition:
> "Read in PDF, write out an assembler configuration".
> Already deployed for the disassemblers.
(my emphasis)
That coupled with a whole tool chain in a friendly language like go, makes be exited for how this might be used by other language designers. While "compile to go" might not be as attractive as "compile to c" -- it's not half-bad. More importantly it kind of smells like part of this tool chain should make it quite easy to generate machine code quite easily.
Nothing against llvm, rpython/pypy, graal etc - but the more the merrier!
Internal graph representation the compiler uses for programs. llvm uses SSA form of programs as its main low level representation. The benefits of SSA is that it enables some analysis and optimization techniques.
Finally, my moment! I submit my own library, which is really meant for two players and scoring...and like much of what I do, was purely pun-driven. Maybe one day I'll add AI:
Have a look at the Go Text Protocol [1] and SGF [2]. If you add these then the strongest existing AIs can already play on your board.
All that said you can of course write your own bots, but Copmputer Go isn't as easy as one might think. In fact it's still considered a much harder problem than Computer Chess.
The usual way to do it is to define a restricted subset of the language that has explicit memory management and is statically typed, and implement GC with that.
They're all C programmers!
Why to you think all of them created languages to replace C on their daily work?
There are many reasons to use a specific programming languages besides "I like it".
For example I will never use C on personal projects, but will use it without any complaints if that is what my customers ask for.
In what possible sense can it be described as an assembler?
https://en.wikipedia.org/wiki/Niklaus_Wirth
https://en.wikipedia.org/wiki/Alan_Kay
https://en.wikipedia.org/wiki/Jean_Ichbiah
...
Wasn't CFront written in C++?[1] (Of course, the initial version of C with classes was probably written in C.)
[1] https://en.wikipedia.org/wiki/Cfront
Which languages do you think guys at Microsoft, Apple and Google get to choose?
Those developed by their employers or others?
Deleted Comment
I'm not saying it would be necessary slower than a compiler written in C, if they wrote the more critical parts in assembler, but you would think compiling speed would be one of the outstanding discussion points, after a major rewrite.
https://groups.google.com/forum/#!msg/golang-dev/6obxRcm-rqc...
Edit: Of course, faster speeds would be interesting to hear about, so great question.
Fast compilation is an explicit goal of Go, so they certainly think it matters.
Deleted Comment
Deleted Comment
https://github.com/golang/go/tree/dev.ssa
No idea how long it will take to mature, but I hope there are some decent performance improvements once it is fully functional.
> Generate machine descriptions from PDFs (or maybe XML).
> Will have a purely machine-generated instruction definition:
> "Read in PDF, write out an assembler configuration".
> Already deployed for the disassemblers.
(my emphasis)
That coupled with a whole tool chain in a friendly language like go, makes be exited for how this might be used by other language designers. While "compile to go" might not be as attractive as "compile to c" -- it's not half-bad. More importantly it kind of smells like part of this tool chain should make it quite easy to generate machine code quite easily.
Nothing against llvm, rpython/pypy, graal etc - but the more the merrier!
https://github.com/acityinohio/baduk
All that said you can of course write your own bots, but Copmputer Go isn't as easy as one might think. In fact it's still considered a much harder problem than Computer Chess.
[1] http://www.lysator.liu.se/~gunnar/gtp/
[2] http://en.wikipedia.org/wiki/Smart_Game_Format
https://github.com/skybrian/Gongo
> [14:54:36] Topic is Go, the game (not the silly language) ! (the language see #go-nuts
> Code is cleaner, testable, profilable, easier to work on.
This is just great!
How do you write a GC in a GC'd language?
For example, Pre-Scheme and RPython.
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.3.40...
https://en.wikipedia.org/wiki/PyPy#RPython
Can the GC be interrupted by itself if it takes too long or uses too much memory?
It seems like there are several things about the GC that would need to be special-cased, since the GC is implicitly invoked by the runtime.
edit: This is the link I meant - https://www.ece.cmu.edu/~ganger/712.fall02/papers/p761-thomp...
c_i is the i'th version of the compiler.
Source code of c1 has bug, source code of c2 and c3 is fixed. Bug in c1 causes binary of c2 to have bug. Binary bug in c2 causes binary bug in c3.