开发者

good references for comparing languages?

I'm familiar with several computer languages (Java, C, C++, Python, Scheme, Javascript) but am only vaguely with the terminology for analyzing and comparing them (things like dynamic/static binding, dynamic/static types, pass-by-value vs. pass-by-reference, closures, operator overloading, etc.).

Is there a whitep开发者_StackOverflowaper or easily-readable-book that discusses these topics in enough depth for me to be able to look at an unfamiliar computer language and say to myself, "Oh, it has dynamic binding and static types", and to say "That's different from C++ because ... but similar because ..."?


If you like learning by example, Rosetta Code is a great resource. Its Language Comparison Table might be a good place to start.

I've found it helpful both for theoretical comparisons ("How do C++ and Java's respective exception handling systems differ?") and for practical work ("I know how to do a foreach() in PHP; what's the syntax for the equivalent operation in PERL?").


This free ebook may be somewhat heavier than what you are looking for, but is comprehensive:

Practical Foundations for Programming Languages (pdf 1.5Mb)

Here is an extract of the TOC:

I Judgements and Rules
1 Syntactic Objects 
2 Inductive Definitions 
3 Hypothetical and General Judgements 

II Levels of Syntax 
4 Concrete Syntax 
5 Abstract Syntax 

III Statics and Dynamics 
6 Statics 
7 Dynamics 
8 Type Safety 
9 Evaluation Dynamics 

IV Function Types 
10 Function Definitions and Values 
11 Godel’s System T 
12 Plotkin’s PCF 

V Finite Data Types 
13 Product Types 
14 Sum Types 
15 Pattern Matching 
16 Generic Programming 

VI Infinite Data Types 
17 Inductive and Co-Inductive Types 
18 Recursive Types 

VII Dynamic Types 
19 The Untyped l-Calculus 
20 Dynamic Typing 
21 Hybrid Typing 

VIII Variable Types 
22 Girard’s System F 
23 Abstract Types 
24 Constructors and Kinds 

IX Subtyping 
25 Subtyping 
26 Singleton Kinds 

X Classes and Meth
27 Dynamic Dispatch 
28 Inheritance 

XI Control Effects 
29 Control Stacks 
30 Exceptions 
31 Continuations 

XII Types and Propos
32 Constructive Logic 
33 Classical Logic 

XIII Symbols 
34 Symbols 
35 Fluid Binding 
36 Dynamic Classification 

XIV Storage Effects 
37 Modernized Algol 
38 Mutable Data Structures 

XV Laziness 
39 Lazy Evaluation 
40 Polarization 

XVI Parallelism 
41 Nested Parallelism 
42 Futures and Speculation 

XVII Concurrency 
43 Process Calculus 
45 Distributed Algol 

XVIII Modularity 
46 Components and Linking 
47 Type Abstractions and Type Classes 
48 Hierarchy and Parameterization 

XIX Equivalence 
49 Equational Reasoning
50 Equational Reasoning
51 Parametricity 
52 Process Equivalence 

XX Appendices 
A Mathematical Preliminaries 
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜