Page MenuHomePhabricator

Comparison of Languages
Updated 2,643 Days AgoPublic

"[A common mistake in language design is] spending endless efforts to imitate what is currently provided by existing fashionable languages." -Bjarne Stroustrup

Purpose and Caution

There are hundreds of programming languages out there. Most of them present unique features and ideas, and the ones that do not risk becoming irrelevant almost instantly.

Ratscript should be intentionally designed, where no behavior or characteristic of the language comes into existence due to a lack of a decision. I humbly submit the following: Programming languages will naturally evolve towards the characteristics of binary, unless intentionally steered away. Whether or not this holds true, only time will tell. However, our design efforts should treat that maxim as law.

Most language comparisons are based on opinion, and this will likely be no less an example of that. However, contributors should set aside their personal habits and keep the following Ratscript language goals in mind:

  1. Ratscript should resemble common logic more than computer logic, which yields a visually obvious syntax that demonstrates the logical pathways of the program (Case and point, the keyword make defines a new variable, as opposed to var or dim.)
  2. Ratscript should have a shallow initial learning curve, so that its basic functionality can be easily grasped by non-programmers.
  3. Ratscript should foster conscientious programming habits, and encourage less-experienced programmers to default to safer and more effective methods and algorithms.

What Should Be Observed

For each language, we need to note...

  • What makes the language unique: What killer features or brilliant ideas does it contribute? What makes the language stand out?
  • What are the language's shortcomings: What could have been done better? Where does it fall short of the mark compared to programming languages in general.

The following topics should be explored with each language, though contributors are in no way limited to these. Note Ratscript's stance for each.

  • Commenting: Commenting syntax should be easy to remember and use.
  • Weak/Strong Typing: Programmers should at least recognize what type a variable contains.
  • Atomic Types: What types are considered atomic in the language?
  • Early/Late Binding: [Could someone explain this?] (No stance yet.)
  • Paradigms: What paradigms does the language support? These include...
    • Functional
    • OOP
    • True OOP (according to Alan Kay, not C++)
    • Generic
  • Garbage Collection: How much does the language automagically perform garbage collection? (No stance yet.)
  • Memory Management: How much does the language automagically perform memory management/allocation? (No stance yet.)
  • Turing Complete: Can the language fully simulate the Turing machine? Ours really should.
  • Compile-To-Bytecode: Can the language be compiled to a binary?
  • Compatibility: What operating systems does the language support.

Languages

(Expand at will.)

ActionScript 3.0

Basic (Visual)

C

C++

C# (Visual)

Haskell

Java

Javascript

Lua

Problems

  • Fully loose-typed. Accessing an undefined variable just returns nil (Source). While seemingly intuitive, this would arguably create silent errors in code. -@jcmcdonald
  • Unlike in most languages, in Lua, nil = false and everything else (INCLUDING 0!) = true (Source). Doesn't this undermine binary math? -@jcmcdonald

Python

Smalltalk

Last Author
jcmcdonald
Last Edited
May 20 2015, 5:23 PM

Event Timeline

jcmcdonald edited the content of this document. (Show Details)
jcmcdonald edited the content of this document. (Show Details)
jcmcdonald changed the edit policy from "Ratscript [Project] (Project)" to "All Users".