どの言語を選択してもよい
どんなプログラミング言語も機械語に変換できれば動くので、原理的にはどれを選択してもよい
目的にあった表現がやりやすいものを選ぶべき
慣習に従う
あたりから使われているものを選べばいい
書き方が好きなものを選ぶ
言語によって抽象度に違いがある
操作したいレイヤーに注目する
でもさ、たとえば「オセロ(リバーシ)作れ」って言われたとき、どう書く?二次元配列用意して、初期化して、交互に番を回して、石置けるかチェックして、石置いたらひっくり返して……うーん大長編になりそうだな。
ここでバカは「C言語のあの機能を使えば……この関数を使って……二次元配列の……」とか悩み出す。5時間ぐらい悩む。またモニターをにらみつける作業に戻る。 私なら3分でこう書く:
高速に動くプログラムを組む、というレイヤー
code:c
init_board(board);
int is_my_turn = 0;
int is_game_end = 0;
while(!is_game_end) {
print_board(board);
int x = get_input("X:");
int y = get_input("Y:");
int is_my_stone = is_my_turn;
if(!is_puttable(board, is_my_stone, x, y)) { continue; }
is_game_end = put_stone(board, is_my_stone, x, y);
is_my_turn = !is_my_turn;
}
これが正しく動くかは知らん。変数宣言の段階で文法エラー吐きそう。Cの動作確認めんどくせえし直さんけど。!演算子とか存在したっけ。でもだいたいこんな雰囲気だろ。
オセロスクリプトを利用したなにかを作る、というレイヤー
オセロの部分はすでに誰かが実装してくれたものを利用する
code:js
const reversi = new ReversiGame();
reversi.start();
2行。はい終わり。満足。完璧。