`
RednaxelaFX
  • 浏览: 3015391 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

几个链接和杂记。有待进一步阅读。

阅读更多
Language Docs: http://lambda-the-ultimate.org/node/3

PLDI 2009

Language Specification相关:
JLS 3rd
D 2.0
C99
Real-Time Specification for Java documents and papers

Language Grammar相关:
Free Grammars for Programming Languages
C++

VM Spec:
Java Virtual Machine Specification
Clarifications and Amendments to the Java Virtual Machine Specification

别的程序设计语言相关:
J Programming Language
The Nice Programming Language
Nemerle Programming Language
Katahdin
引用
In most programming languages you can define new functions and types. In the same way, Katahdin allows you to define new expressions, statements and other language constructs.

The Packrat Parsing and Parsing Expression Grammars Page
要关注!

SWiK: vm + compiler

WebKit: Announcing SquirrelFish, a new JavaScript engine

Good For Nothing Compiler (PDC - TLN410) and other goodies
这个blog本身要关注下。虽然Joel Pobar已经离开了微软,但他以前留下的资料还是相当值得一读。

http://www.red-gate.com/products/ants_profiler/boost_app_performance_ebook5.htm
RedGate出的免费C#书

GNU MIX
引用
MIX is Donald Knuth's mythical computer as described in his monumental work The Art Of Computer Programming.


Java Compilers
有关Java的编译器的介绍,以及class文件的优化器等工具的介绍。

JAVA compile-on-demand service system for accelerating processing speed of JAVA program in data processing system and method thereof
US Patent 7174544。这个专利真有意思,在外部机器执行编译然后传到远程设备上。要这么做的话Java的一个重要好处不就没了么——bytecode的文件小,适合网络传输。

Steve Yegg: Rhinos and Tigers
其中包括Steve Yegg对VM的观点:互操作!Walter Bright在VM的跨平台、安全性等方面或许有自己的见解,但是在互操作方面……

Blue Book Chap 26-30 online
Smalltalk-80的Blue Book中关键的几章。实现动态语言的话这个必须一读。

JavaScript语言精髓与编程实践 - 勘误

http://www.iosephus.net/EBooks
ebook links

C# で 劣化 Variant を書いてみた
好强啊……通过创建这么一个variant作为代理,并且实现隐式转换,居然就能做这么有趣的多类型返回……太有趣了~

I'm just sayin' Ed Maurer's blog
C#编译器的重要人物的blog。要关注

Future Focus I: Dynamic Lookup
static void Main(string[] args)
{
    dynamic
    {
        object myDynamicObject = GetDynamicObject();
        myDynamicObject.SomeMethod();         // call a method   
        myDynamicObject.someString = "value"; // Set a field
        myDynamicObject[0] = 25;              // Access an indexer
    }
}

哪天真的能在自己的C#代码里用上这个的话那真是要哭了 T T

Expression Tree Basics
讲解Expression Tree的入门知识。相关代码在这里http://code.msdn.microsoft.com/linqfarm

Da Vinci Machine相关:
Da Vinci Machine Project
Bravo for the dynamic runtime! : John Rose @ Sun

Da Vinci Machine看来会主要以JRuby为实验语言。
DVM需要改动HotSpot JVM的实现。可能会增加tail call的opcode。根据John Rose的说法,DVM要比DLR先进许多。到底如何呢。

DLR相关:
Jim Hugunin's Thinking Dynamic: A Dynamic Language Runtime (DLR)
Martin Maly
John Lam on Software
CLR Inside Out - IronPython and the Dynamic Language Runtime
DLR则是以IronPython为实验语言。IronRuby貌似也能得益。
DLR在CLR之上,不会改动任何现有的CLR实现,而是另外设计一套共享动态类型和实现一个用于更好的支撑动态语言的库。

Mono相关:
Miguel de Icaza and Dragos Manolescu: On Open Source, Mono and Moonlight
Channel 9上Miguel的访谈。回头要看看。

另一个Channel 9的访谈,JAOO 2007: Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff。里面提到了software fault isolation,UVM(=universal virtual machine,但到底是不是IBM的那个?)等。记下,留待进一步查阅。
顺便查到了Dave的一篇东西,Language constructs for context-oriented programming: an overview of ContextL

Tracing JIT相关:
http://lua-users.org/lists/lua-l/2008-02/msg00051.html
http://www.bluishcoder.co.nz/2008/02/quick-introduction-to-tamarin-tracing.html

Stephan T. Lavavej: Digging into C++ Technical Report 1 (TR1)。哈哈,这里面关于RAII的说明真是够直白的……他这么一说我终于知道印象中的C++的RAII是怎么回事了:
T* ptr = new T; // bad, resource given to raw pointer, possible resource leak

with RAII, resource should be given to objects (instead of raw pointers), which has ctors and dtors that manages resources
不过这位同志明显在偷换概念啊……OK,是没有一个线程或者什么的常驻在后台扫描是否有垃圾,但ref-count本身就是GC机制的一种形式,这ref-count的自加/自减也是消耗计算资源的啊……|| ref-count的最大好处在于:1、确定性析构;2、GC的负担被分担到整个运行时间中而不会造成运算负荷高峰。
于是TR1中的shared_ptr就等于是标准库中实现的一个auto-pointer:
shared_ptr<T> ptr(new T(arg1, arg2));
ptr2 = ptr;
// ...

shared_ptr似乎还用于能解决slicing问题,例如:
class Base {};
class Derived : public Base {};
void foo(Base b) { /* ... */ }
Derived d;
foo(d); // raw, derived object sliced

有了shared_ptr我们可以:
vector<shared_ptr<Base>> v;
v.push_back(make_derived(arg1));
v.push_back(make_base(arg2));
// ...

到48:00左右,他开始介绍shared_ptr的用法注意:
1、不要用“裸”数组(new xxx[yyy]),用vector<T>代替(因为vector实现RAII)
2、每当new出一个object时,把它交给一个shared_ptr。

哦,说来,C++0x里原本对GC的提案被否了啊……也挺正常的


C# LINQ相关:
Validation library using C# 3.0 lambda expressions

Looking Inside C# Closures

Parrot相关:
Parrot
Parrot SVN trunk

Cocos相关:
Cocos: "Compiler Construction Set", part 1 (framing the problem)
Cocos: "Compiler Construction Set", part 2 (state of the art)
Cocos: "Compiler Construction Set", part 3 (implementation approach)

ECMAScript相关:
Why I Love ECMAScript 4: Real Decimals
想起之前我给Script.NET提出bug报告时用的例子也是受这篇文章启发的。
JavaScript on Rails
引用
Rhino…was written with an eye for performance. The Rhino code base reads almost like C code: it avoids allocation and does as much as possible with jump tables to avoid the overhead of virtual method lookups. It has two code paths: a bytecode interpreter that runs in a tight loop, and an optimizing Java bytecode compiler that turns many expensive-ish JavaScript property lookups into Java local or instance-variable lookups. It’s a pretty serious piece of software.

When you start digging into Rhino, you find unexpected depth. JavaScript (unlike Perl, Python and Ruby, at least today) actually has a real specification, and Rhino follows it rigorously, aiming for complete SpiderMonkey compatibility within the bounds allowed by the different language platforms. Rhino also offers rich configurability, has well-defined multi-threading semantics, has a full set of hooks for debugging and profiling, and much more besides. There’s a lot under the hood.


shaver 写道
SpiderMonkey already has a mark-and-sweep collector safe against reference cycles, but we've wanted a more sophisticated (generational, f.e.) collector for some time; it'll be interesting to see how MMgc can be used to improve our GC situation, for sure!

[ Swfdec ] compiling vs interpreting
引用
> - one layer less
> since I don't convert to (probably slower because of various workarounds)
> Spidermonkey bytecodes, there's one area less that can fuck up, namely
> jsinterp.c - which is hell to debug, because 90% of the code in that file
> is inside macros, and you tell me why ELEMENT_OP (2, -1, CACHED_GET (-1))
> or whatever crashes.
So I hope to get the crashes into my code - I can
> easier work around them then without affecting other working code.
> Oh, and it's probably faster, too.


Ruby相关:
Rubinius
我才刚开始关注官方Ruby 1.8.6/1.9和JRuby 1.1以外的Ruby实现。原来有这么有趣的Rubinius么……Smalltalk inspired Ruby,听起来都会觉得“有趣” XD
Introduction to the Rubinius Compiler
哦哦,Ruby写的Ruby编译器。这东西回头再仔细读读,不过那sexp真是有Lisp之魂啊。
Ruby Implementations Shootout: Ruby vs Yarv vs JRuby vs Gardens Point Ruby .NET vs Rubinius vs Cardinal
2007-02-19的。还是可以一看就是了。
Rubyソースコード完全解説
阅读Ruby源码必备。一定要读读。
Headius: Duby: A Type-Inferred Ruby-Like JVM Language
噢噢,开始了开始了,传说中的扩展。不过Charles Nutter挺聪明的,他并不是要创造一个不兼容的Ruby(JRuby还是要与MRI兼容),而是要创造一个看起来像Ruby的JVM语言。似乎不少回复的人都在指向Scala和Python的例子……
ParseTree
RubyForge上的一个项目。把Ruby的源文件转换成s-exp。关注一下。

Mozilla Prism相关:
prism
Mozilla对于整合桌面与网络的答案就是这Prism。跟师兄聊起这东西的时候,师兄说这东西缺乏吸引力,宁愿多开几个浏览器窗口。hmm

jMonkeyEngine相关:
jMonkeyEngine
演示视频

OS相关:
Singularity
SharpOS
天啊,原来有那么多个想使用C#来实现操作系统的project。微软自己有Singularity,在2007年已经完成了v1.0并发布给了几个大学做研究(没有对公众开放)。相关的C#编译器是Bartok

Ribbon UI相关:
Ribbon UI Control Roundup for Developers
DXperience
Code Project: WPF C# Ribbon Control Library
Code Project: A Graphical WPF Ribbon Control Builder
最近想做些东西想用Ribbon UI,但是总是没免费的库可用,实在是郁闷.Code Project上的这个Ribbon UI控件看起来颇有指望,希望作者能快点把它更新到比较实用的状态吧...
Bill Gates最近也宣布说要在Windows 7里采用Fluent/Ribbon风格的GUI了,这算是好事么。
Actipro Software Product List
这里面WPF控件里的Ribbon相关自然是很吸引了我的注意力,而SyntaxEditor更吸引我的注意力了...要关注下.与它伴随的是CodeHighlighter,一个ASP.NET控件.也非常有趣.

代码高亮JavaScript插件:
http://codepress.org/
http://softwaremaniacs.org/soft/highlight/en/
http://marijn.haverbeke.nl/codemirror/

PDF相关:
iTextSharp
这东西可以让C#程序输出PDF文档。有意思……

<html>
    <body>
        <script>
            function myFunction() { alert("Old"); };   
            var savedFunction = myFunction;   
            myFunction = function() { alert("New"); };   
            myFunction();    // prints"New"   
            savedFunction(); // prints"Old"
        </script>
    </body>
</html>

看来我误解了某binding的意思……回头看看

Curly Brace Languages相关:
引用
Languages
ABCL/c+
Alef
Limbo
AutoHotkey
AWK
BCPL
C - developed circa 1970 at Bell Labs
C shell (csh)
C++
C#
Ch - embeddable C/C++ interpreter
ChucK - for audio programming
Cilk - concurrent C for multithreaded parallel programming
Coyote - C variant intended to lower the likelihood of some common errors, for example, buffer overflows
Cyclone - C variant
D - C/C++ inspired
DINO
E
ECMAScript
ActionScript
DMDScript
E4X
JavaScript
JScript
MDMscript
Ferite
Frink
ICI
Java
Groovy
Join Java
X10
Objective-C
Perl
PHP
Pico
Pike
rc
TSL
UnrealScript
Windows PowerShell
Yorick


游戏引擎相关:
POPcade社群 » 遊戲引擎
列表。有不少游戏引擎和相关库的介绍。挺有意思的。

AVD GAME CREATE SYSTEM “QLIE”
原来かみぱに的引擎叫QLIE。很好,记下。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics