Difference between revisions of "Syntax Comparison"

From mi-linux
Jump to navigationJump to search
m
Line 1: Line 1:
 
__TOC__
 
__TOC__
 +
  
 
== Students ==
 
== Students ==
  
 
This is a comparison of the syntax of some popular programming languages, including '''Scala''' which we will be using on 5CS004. Where you see the word "TODO", please collaborate to fill in the blank parts of the tables. We will be adding to this page as the module progresses.
 
This is a comparison of the syntax of some popular programming languages, including '''Scala''' which we will be using on 5CS004. Where you see the word "TODO", please collaborate to fill in the blank parts of the tables. We will be adding to this page as the module progresses.
 +
  
 
== Useful language references ==
 
== Useful language references ==
Line 55: Line 57:
 
| <pre>&&, ||, !</pre>
 
| <pre>&&, ||, !</pre>
 
| <pre>&&, ||, !</pre>
 
| <pre>&&, ||, !</pre>
| <pre>TODO</pre>
+
| <pre>&&, ||, !</pre>
 
| <pre>and, or, not</pre>
 
| <pre>and, or, not</pre>
 
|-
 
|-
Line 64: Line 66:
 
| <pre><, >, <=, >=, ==, !=</pre>
 
| <pre><, >, <=, >=, ==, !=</pre>
 
|}
 
|}
 +
  
 
== Input / output ==
 
== Input / output ==
Line 77: Line 80:
 
| <pre>echo("hello");</pre>
 
| <pre>echo("hello");</pre>
 
| <pre>System.out.println("Hello");</pre>
 
| <pre>System.out.println("Hello");</pre>
| <pre>TODO</pre>
+
| <pre>println("Hello")</pre>
 
| <pre>print "Hello"</pre>
 
| <pre>print "Hello"</pre>
 
|-
 
|-
Line 114: Line 117:
 
}
 
}
 
</pre>
 
</pre>
| <pre>TODO</pre>
+
| <pre>if (a==b) println("same")
 +
else println("different")
 +
</pre>
 
| <pre>if a==b:
 
| <pre>if a==b:
 
     print 'same'
 
     print 'same'
Line 130: Line 135:
 
}
 
}
 
</pre>
 
</pre>
| <pre>TODO</pre>
+
| No equivalent.
| <pre>TODO</pre>
+
| No equivalent.
 
| <pre>if a<0:
 
| <pre>if a<0:
 
     print 'negative'
 
     print 'negative'
Line 165: Line 170:
 
}
 
}
 
</pre>
 
</pre>
| <pre>TODO</pre>
+
| <pre>i match {
 +
    case 0 => println("i equals 0")
 +
    case 1 => println("i equals 1")
 +
    case 2 => println("i equals 2")
 +
    case _ => println("i is not 0, 1, or 2")
 +
}
 +
</pre>
 
| No equivalent. Use "if" instead.
 
| No equivalent. Use "if" instead.
 
|}
 
|}
 +
  
 
== Iteration ==
 
== Iteration ==
Line 182: Line 194:
 
     echo($i);
 
     echo($i);
 
}</pre>
 
}</pre>
| <pre>TODO</pre>
+
| <pre>for (i <- i to 10)
 +
    println(i)
 +
</pre>
 
| <pre>for(int i=0; i<10; i++) {
 
| <pre>for(int i=0; i<10; i++) {
 
     System.out.println(i);
 
     System.out.println(i);
Line 195: Line 209:
 
</pre>
 
</pre>
 
| No equivalent.
 
| No equivalent.
| <pre>TODO</pre>
+
| <pre>
 +
mylist.foreach((msg:String) => println(msg))
 +
</pre>
 
| <pre>for i in range(10):
 
| <pre>for i in range(10):
 
     print i
 
     print i
Line 210: Line 226:
 
while(i<10) {
 
while(i<10) {
 
     System.out.println(i);
 
     System.out.println(i);
     i++'
+
     i++;
 +
}
 +
</pre>
 +
| <pre>
 +
var i=0;
 +
while(i<10) {
 +
    println(i)
 +
    i+=1
 
}
 
}
 
</pre>
 
</pre>
| <pre>TODO</pre>
 
 
| <pre>i=0
 
| <pre>i=0
 
while i<10:
 
while i<10:
Line 220: Line 242:
 
</pre>
 
</pre>
 
|}
 
|}
 +
  
 
== Functions ==
 
== Functions ==
Line 236: Line 259:
 
</pre>
 
</pre>
 
| No equivalent. Use methods.
 
| No equivalent. Use methods.
| <pre>TODO</pre>
+
| <pre>def print_msg(msg: String) = {
 +
    println(msg)
 +
}
 +
</pre>
 
| <pre>def print_msg(msg):
 
| <pre>def print_msg(msg):
 
     print msg
 
     print msg
Line 270: Line 296:
 
| <pre>TODO</pre>
 
| <pre>TODO</pre>
 
|}
 
|}
 
  
  
Line 310: Line 335:
 
| <pre>TODO</pre>
 
| <pre>TODO</pre>
 
|}
 
|}
 +
  
 
== Classes, objects, methods, etc ==
 
== Classes, objects, methods, etc ==

Revision as of 20:16, 23 January 2011


Students

This is a comparison of the syntax of some popular programming languages, including Scala which we will be using on 5CS004. Where you see the word "TODO", please collaborate to fill in the blank parts of the tables. We will be adding to this page as the module progresses.


Useful language references


Basics

PHP Java Scala Python
Single line comment
// comment
// comment
// comment
# comment
Multi-line comment
/* comment */
/* comment */
/* comment */
Doesn't have multi-line comments.
Null object
NULL
null
TODO
None
Arithmetic operators
+,-,*,/,%,*
+,-,*,/,%,*
+,-,*,/,%,*
+,-,*,/,%,*
True and false
TRUE, FALSE
true, false
TODO
True, False
Boolean operators
&&, ||, !
&&, ||, !
&&, ||, !
and, or, not
Relational operators
<, >, <=, >=, ==, !=
<, >, <=, >=, ==, !=
<, >, <=, >=, ==, !=
<, >, <=, >=, ==, !=


Input / output

PHP Java Scala Python
Print to console
echo("hello");
System.out.println("Hello");
println("Hello")
print "Hello"
Read from keyboard
readline("")
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String kbd = in.readLine();
val kbd = readLine()
kbd = raw_input() # kbd is a string
kbd = input() # kdb may be some other type


Selection

PHP Java Scala Python
if/else
if ($a==$b) {
    echo("same");
} else {
    echo("different");
}
if (a==b) {
    System.out.println("same");
} else {
    System.out.println("different");
}
if (a==b) println("same")
else println("different")
if a==b:
    print 'same'
else:
    print 'different'
else-if
if ($a<0) {
    echo("negative");
} elseif ($a==0) {
    echo("zero");
} else {
    echo("positive");
}
No equivalent. No equivalent.
if a<0:
    print 'negative'
elif a==0:
    print 'zero'
else:
    print 'positive'
switch
switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
}
switch ($i) {
    case 0:
        System.out.println("i equals 0");
        break;
    case 1:
        System.out.println("i equals 1");
        break;
    case 2:
        System.out.println("i equals 2");
        break;
}
i match {
    case 0 => println("i equals 0")
    case 1 => println("i equals 1")
    case 2 => println("i equals 2")
    case _ => println("i is not 0, 1, or 2")
}
No equivalent. Use "if" instead.


Iteration

PHP Java Scala Python
for
for ($i=0; $i<10; $i++) {
    echo($i);
}
for (i <- i to 10)
    println(i)
for(int i=0; i<10; i++) {
    System.out.println(i);
}
No equivalent
foreach
$a = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
foreach ($a as $v) {
    echo $v;
}
No equivalent.
mylist.foreach((msg:String) => println(msg))
for i in range(10):
    print i
while
$i=0;
while ($i<10) {
    echo $i;
    $i++;
}
int i=0;
while(i<10) {
    System.out.println(i);
    i++;
}
var i=0;
while(i<10) {
    println(i)
    i+=1
}
i=0
while i<10:
    print i
    i += 1


Functions

PHP Java Scala Python
Defining functions
function print_msg($msg) {
    echo $msg;
}
No equivalent. Use methods.
def print_msg(msg: String) = {
    println(msg)
}
def print_msg(msg):
    print msg


Compound types (arrays, lists, etc)

PHP Java Scala Python
Fixed length array
TODO
TODO
TODO
TODO
Mutable array
TODO
TODO
TODO
TODO
Associative arrays / hashes
TODO
TODO
TODO
TODO


Exception handling

PHP Java Scala Python
Raise an exception
throw new Exception("Division by zero");
throw new ClassNotFoundException();
TODO
raise ValueError()
Handle / catch an exception
TODO
TODO
TODO
TODO

Dealing with types

PHP Java Scala Python
Convert object to different type
TODO
TODO
TODO
TODO


Classes, objects, methods, etc

PHP Java Scala Python
Root object
TODO
java.lang.Object
TODO
object
Create an object
TODO
TODO
TODO
TODO
Call methods
TODO
TODO
TODO
TODO
Create and update instance attribute
TODO
TODO
TODO
TODO
Create and update class attribute
TODO
TODO
TODO
TODO
Create subclass
TODO
TODO
TODO
TODO