`size_t`, `ssize_t`とは何か

size_t Used for sizes of objects.

size_tはオブジェクトのサイズを表すために使われる。unsignedな整数値である。

ssize_tsize_tにエラーを表す負の値が加わっている。signedな整数値である。

http://pubs.opengroup.org/onlinepubs/007908775/xsh/systypes.h.html

詳しく

https://stackoverflow.com/questions/15739490/should-use-size-t-or-ssize-t

のベストアンサーより。

ssize_t is used for functions whose return value could either be a valid size, or a negative value to indicate an error. It is guaranteed to be able to store values at least in the range [-1, SSIZE_MAX] (SSIZE_MAX is system-dependent).

So you should use size_t whenever you mean to return a size in bytes, and ssize_t whenever you would return either a size in bytes or a (negative) error value.

See: http://pubs.opengroup.org/onlinepubs/007908775/xsh/systypes.h.html

ssize_tはvalidなサイズであるか、エラーを示す負の値となる関数の戻り値として使われる。これは少なくとも[-1, SSIZE_MAX]の範囲の整数値を取ることができることが保証されている(SSIZE_MAXはシステム依存)。

サイズをバイト数で返すことができることを意味するときは常にsize_tを使い、バイト数で表されるサイズあるいは(負の)エラー値を返すときは常にssize_tを使うべきである。

この回答に付いたコメント

Well, this answer fails to fully explain the consequences of basing such decisions on pure interface considerations. It is unlikely that any implementation will use wider type for ssize_t than it uses for size_t. This immediately means that the price you will pay for the ability to return negative values is halving of the positive range of the type. I.e. SSIZE_MAX is usually SIZE_MAX / 2. This should be kept in mind. In many cases this price is not worth paying just for the ability to return -1 as a negative value.

signedな符号付き整数を使うと単純にコストが2倍になるのでssize_tが使われる場面は少ないと言っている。が、以降コメントにコメントが付いて若干荒れている。

【読んだもの】Pythonは逐一解釈されるのか、それともコンパイルされるのか?(答えはどちらも)イエスだ。

Ned Batchelder: Is Python interpreted or compiled? Yes.

人々はコンパイル言語かインタプリタ(逐一解釈)言語か、という二分法にこだわる傾向があるが、現代の言語処理系はそんなに単純じゃないよね、という話。

ここで「コンパイル」はソースコード機械語(CPU命令セットの集まり)に変換すること、「インタプリタ」はソースから一度に一行読み込んではプログラムを実行するモノ。この単純な定義のもとタイトルのような質問が行われる、とされている。

Pythonにおいてはソースコードバイトコードに変換される。バイトコードの見かけはCPU命令セットのようだが、実際の実行は仮想マシンVM)によって行われるという点で異なる(仮想マシンはOS全体の機能をエミュレートせず、単純化したCPU命令実行環境を与えていると考えられる)。

Pythonではdisモジュールを使うとバイトコードを眺めることができる。byterunというPythonで書かれたバイトコードを実行するVMが存在する。これは教育目的だがソースを読んでみると面白いかもしれない。)

バイトコードに変換する言語といえばJavaがある。Javaコンパイル言語、Pythonインタプリタ言語と区別されるのはなにゆえか。Pythonではバイトコードへの変換は暗黙的に行われ、ユーザーがコンパイラを直接呼び出すことはなく、.py拡張子のファイルが単純に実行される。Javaはユーザーが明示的にコンパイラを呼び出し、ソースコードをクラスファイルにコンパイルする。

あとPythonの特徴としてREPLがあるというのがある。これは「コンパイルされる」言語にはあまりない特徴である。REPLでも暗黙的にバイトコードへの変換・実行が行われており、この暗黙性がPythonを「インタプリタ」たらしめている。

ただしJavaやCのような「コンパイルされる」言語がREPLを持てないのかというとそんなことはない。Javaはもともとバイトコードに変換する方法を取っていたが、いまはJust-In-Time(JIT)な手法で実行時に機械語コンパイルできる。このように考えると、コンパイル言語とインタプリタ言語の区別というのはもろいものであるように感じられる。

一つ留意すべきことは、プログラムがどのように実行されるかというのは、単に実装の話であって、プログラミング言語の特徴ではないということだ。上記Pythonに関する話はCPythonについてであり、たとえばPyPyのようなJITコンパイルされる方式の言語処理系も存在するわけである。

というわけでPythonが逐一解釈されるのかコンパイルされるのか?という疑問については、どちらもイエス。ただし世界はもっと複雑なものなのだ…という結論に落ち着く。

トリビア:xtermのREADMEには「この門をくぐる者一切の希望を捨てよ」と書いてある

正確には英語なので"Abandon All Hope, Ye Who Enter Here"ですが。言うまでもなくダンテ「神曲」の引用です。

歴史的な経緯(察し)によりコードがめちゃんこ読みにくいからこんな注意書きが生まれたとのこと。

RWOを読むかもしれないので(自分のさじ加減一つの問題だけど)準備した。やったことは次のページのとおり。

Installation Instructions · realworldocaml/book Wiki

$ opam switch 4.01.0
$ eval (opam config env)
$ opam install core utop
$ opam install \
   async yojson core_extended core_bench \
   cohttp async_graphics cryptokit menhir

4.01.0より上のバージョンをインストールしようとすると(coreやutopをやろうとした時点で)エラーが出て無理だった。当方macOS

~/.ocamlinitに次のような設定を書いた。

#use "topfind";;
#thread;;
#camlp4o;;
#require "core.top";;
#require "core.syntax";;
(* Added by OPAM. *)
let () =
  try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH")
  with Not_found -> ()
;;

open Core.Std

もし本当に読むとして、言語仕様をつつき回しても仕方ないので、ちゃきちゃきパーサ書くところまで読んでいきたい。

Godot プロジェクト 参考

Godot触ってないのでよくわかりませんが。

デモプロジェクト

Godot Engine - Download

ダウンロードページにあるやつです。本体を落とした人も意外と見落としてるかもしれません。これを読むのがGodotでゲームを作る上での早道となるでしょう。

Dolphin Island

www.youtube.com

Platformer系。デモのPlatformerに比べてプロジェクト構成が見づらい気がする。

github.com

Tanks of Freedom

www.youtube.com

isometric map(クォータービュー)な戦略ゲーム。

github.com

DynaDungeons

いわゆるボンバーマン

github.com

https://raw.githubusercontent.com/akien-mga/dynadungeons/master/background.png


あとググればなんかチュートリアル動画とか出てくるようです。