第2章 基本構文
2.1 プログラム構造とエントリーポイント
PHP
<?php
// PHPタグで囲む
// エントリーポイントは不要、スクリプトは上から順に実行
echo "Hello, World!";
// 関数定義は任意の場所で可能
function main(): void
{
echo "Main function";
}
main();
TypeScript
// モジュールとして実行
console.log("Hello, World!");
// 関数を定義して呼び出し
function main(): void {
console.log("Main function");
}
main();
// Node.jsでのエントリーポイントパターン
if (require.main === module) {
main();
}
VB.NET
' モジュールベース
Module Module1
Sub Main()
Console.WriteLine("Hello, World!")
End Sub
End Module
' またはクラスベース
Class Program
Shared Sub Main(args As String())
Console.WriteLine("Hello, World!")
End Sub
End Class
2.2 文の終端
| 言語 | 文の終端 | 備考 |
|---|---|---|
| PHP | セミコロン ; 必須 |
最後の文は省略可(非推奨) |
| TypeScript | セミコロン ; 任意 |
ASI(自動セミコロン挿入)あり |
| VB.NET | 改行 | 継続は _ または暗黙的継続 |
PHP
<?php
$a = 1; // セミコロン必須
$b = 2;
$c = $a + $b;
TypeScript
const a = 1; // セミコロンは任意
const b = 2
const c = a + b
VB.NET
Dim a As Integer = 1 ' 改行で文が終了
Dim b As Integer = 2
Dim c As Integer = a + b
' 行継続(明示的)
Dim longValue As Integer = 1 + 2 + 3 _
+ 4 + 5
' 暗黙的な行継続(演算子、カンマの後など)
Dim result = 1 + 2 + 3 +
4 + 5
2.3 コメント記法
PHP
<?php
// 単一行コメント
# シェルスタイルコメント(単一行)
/*
* 複数行コメント
*/
/**
* PHPDoc(ドキュメントコメント)
* @param string $name 名前
* @return string 挨拶文
*/
function greet(string $name): string
{
return "Hello, $name";
}
TypeScript
// 単一行コメント
/*
* 複数行コメント
*/
/**
* JSDoc(ドキュメントコメント)
* @param name - 名前
* @returns 挨拶文
*/
function greet(name: string): string {
return `Hello, ${name}`;
}
VB.NET
' 単一行コメント(アポストロフィ)
REM これもコメント(レガシー構文)
'''<summary>
''' XMLドキュメントコメント
'''</summary>
'''<param name="name">名前</param>
'''<returns>挨拶文</returns>
Function Greet(name As String) As String
Return "Hello, " & name
End Function
2.4 識別子と命名規則
有効な識別子
| 言語 | 開始文字 | 使用可能文字 | 予約語の扱い |
|---|---|---|---|
| PHP |
$ + 文字/_
|
文字、数字、_
|
変数は$付きなので衝突しにくい |
| TypeScript | 文字、_、$
|
文字、数字、_、$
|
予約語は使用不可 |
| VB.NET | 文字、_
|
文字、数字、_
|
[]で囲めば使用可 |
PHP
<?php
$userName = "John"; // キャメルケース
$user_name = "John"; // スネークケース
$_private = "secret"; // アンダースコア開始
class UserService {} // パスカルケース(クラス)
const MAX_SIZE = 100; // 大文字スネークケース(定数)
TypeScript
const userName = "John"; // キャメルケース(変数)
const MAX_SIZE = 100; // 大文字スネークケース(定数)
class UserService {} // パスカルケース(クラス)
type UserType = string; // パスカルケース(型)
VB.NET
Dim UserName As String = "John" ' パスカルケース(プロパティ)
Class UserService ' パスカルケース(クラス)
End Class
Const MAX_SIZE As Integer = 100 ' 大文字(定数)
' 予約語を識別子として使用
Dim [Class] As String = "MyClass"
2.5 大文字・小文字の区別
| 言語 | 区別 | 備考 |
|---|---|---|
| PHP | 部分的 | 変数は区別する、関数/クラスは区別しない |
| TypeScript | する | 完全に区別 |
| VB.NET | しない |
userNameとUserNameは同一 |
PHP
<?php
$name = "John";
$Name = "Jane"; // 異なる変数
function hello() {}
function Hello() {} // エラー:同じ関数として扱われる
class User {}
$u = new user(); // OK:クラス名は大文字小文字を区別しない
TypeScript
const name = "John";
const Name = "Jane"; // 異なる変数
function hello() {}
function Hello() {} // 異なる関数
class User {}
class user {} // 異なるクラス(ただし非推奨)
VB.NET
Dim name As String = "John"
Dim Name As String = "Jane" ' コンパイルエラー:同じ変数
Sub Hello()
End Sub
Sub HELLO() ' コンパイルエラー:同じメソッド
End Sub
Class User
End Class
Dim u As user ' OK:Userと同じ