プログラミング言語でよくある概念
Julia.icon
型推論によって自動的に型が定まる
明示的な宣言によって指定することもできる
code:jl
x = 42 # 整数型の変数
y = 3.14 # 浮動小数点型の変数
name = "Alice" # 文字列型の変数
x::Int64 = 42 # 整数型
y::Float64 = 3.14 # 浮動小数点型
flag::Bool = true # 真偽値型
dict::Dict = Dict("a" => 1, "b" => 2) # 辞書型
C++.icon
明示的な宣言が必要
code:cpp
int x = 42;
double y = 3.14;
std::string name = "Alice";
// 型推論もC++11以降で利用できる
auto z = 10;
Java
code:java
int x = 42;
double y = 3.14;
String name = "Alice";
// 型推論もJava 10以降で利用できる
var z = 10;
Lisp
code:lisp
(setq x 42) ; xに42を代入
(setq y 3.14) ; yに3.14を代入
(setq name "Alice") ; nameに文字列"Alice"を代入
(setq number 42) ; 整数
(setq pi 3.14159) ; 浮動小数点数
(setq name "Alice") ; 文字列
(setq is-true T) ; 真偽値
(setq items '(1 2 3 4)) ; リスト
(setq pair '(a . b)) ; ドット対(連結リスト)
制御構造
Julia.icon
code:jl
x = 10
if x > 5
println("x is greater than 5")
elseif x == 5
println("x is equal to 5")
else
println("x is less than 5")
end
C++.icon
code:cpp
int x = 10;
if (x > 5) {
std::cout << "x is greater than 5" << std::endl;
} else if (x == 5) {
std::cout << "x is equal to 5" << std::endl;
} else {
std::cout << "x is less than 5" << std::endl;
}
Lisp
code:lisp
(setq x 10)
(if (> x 5)
(format t "x is greater than 5")
(format t "x is less than or equal to 5"))
; elseifに相当する
(cond
((> x 10) (format t "x is greater than 10"))
((= x 10) (format t "x is equal to 10"))
(T (format t "x is less than 10"))) ; Tはデフォルトケースとして使われる
Julia.icon
code:jl
for i in 1:5
println(i)
end
C++.icon
code:cpp
for (int i = 1; i <= 5; ++i) {
std::cout << i << std::endl;
}
Lisp
code:lisp
(loop for i from 1 to 5 do
(format t "~a " i)) ; 1 2 3 4 5
関数
処理に名前をつけられる
Julia.icon
code:jl
function add(x, y)
return x + y
end
result = add(3, 5) # 8
C++.icon
戻り値の型と引数の型を明示的に宣言する
code:cpp
int add(int x, int y) {
return x + y;
}
int result = add(3, 5); // 8
Java
code:java
public static int add(int x, int y) {
return x + y;
}
int result = add(3, 5); // 8
Lisp
code:lisp
(defun add (x y)
(+ x y))
(add 3 5) ; 8