19.0524, 20.0501,04

その他 のことで覚えておきたいこと


エスケープシーケンス
エスケープシーケンス とは、「特別な文字」 ですが、具体的には、
  ・ プログラム内で使われている記号であるが、文字として使いたい
      / ' " \
  ・ 「見えない文字」 を使う時
      / 改行 タブ
こんな場合に、使います。

別に難しいことではなく、使いたい時に、例えば、このページを見ながら使っていけば、
自然と覚えられると思います。

コードで確認してみましょう
  / 「;」 は、改行しない場合、必要です.
  / ただし、他にもあるのですが、入門レベルでは、このぐらいでいいと思いますが。
  / あと少しある、エスケープシーケンス は、このページなどを基にして、検索してください


桁あふれ
桁あふれ とは、
  ある数値型 に対して、それに収まらない 値 を、収めようとするときに起きるバグ
のことです。

たとえば、
  Byte型: -128 ~ 0 ~ 127
  Int型: -2,147,483,648~0~2,147,483,647
が、収まる範囲ですが、
例えば、
  toByte()メソッド(他の数値型 を、Byte型 に、変換するメソッド)
を使って、
  val byteValue: Byte = 1000.toByte()
こんなコードを実行すると、普通に考えれば、
  単に、Byte型 に、して、データを小さくした(メモリにやさしくなる)
ですが、じつは、このコードは、バグ を、引き起こします。
理由は、
  1000 は、-128 ~ 0 ~ 127 の、範囲だから
です。
  こんな時、桁あふれ が、起こります。

パフォーマンス/実行速度 が、上がるからと言って、
小さなデータ型を、使うときは、この事を、考慮しましょう。

桁あふれの例を、こんなコードで、確認しました。


後置++演算子 の、落とし穴
これは、「落とし穴」 というよりは、単に、個人的な好みかもしれません。
個人的なというのは、不思議なのですが、「落とし穴」 だと思っている人が、
あまり多くないというか、深く知っている人は、「こんなのは当たり前」 と思っているかもしれませんが、
私は、後置演算子 を、使いたくないのです、、思わぬミスをするといけないから。

一般的な入門書のサンプルコードでは、
  後置インクリメント / x++(後置デクリメント / x--)
    / x は、変数
は、
  前置インクリメント / ++x(前置デクリメント / --x)
とは、
  明らかに、アクション/動作 が違う
のに、
  前置 は、使わず、後置 ばかりを使っています(for文など)。

もちろん、それらのサンプルコードにおいては、問題がないからなのですが、
  前置 と、後置では、アクションが違うことは、あまり知られていない気がします。

どこが違うのか?こんなコードで考えてみましょう
問題は、
  ${i++}
  ${i}
  ${++j}
  ${j}
の、値 ですね。

インクリメント演算子の定義:   式としての値が、前置の場合はインクリメントした後の値になる(この意味は += 1 と同じ)、   後置の場合はインクリメントする前の値になる。  - Wikipedia -
これを、踏まえて、コンソール画面 への、出力を考えてみましょう。
答えは、こうなります(コード の、後のコメントが、出力結果)

そうです、
  後置 の場合は、演算子を使った後で、初めて、インクリメント/増加 する
のです。

ここで、「落とし穴となるコード」 を、示したかったのですが、思いついたのは、「今一つ」 なので、
止めときます。
また、逆に、「わざわざ後置演算子」 を、使う例 も、あるはずですが(でなけりゃ 後置 を作らないから)、
どんなふうに使うのか知りたのですが、分かりません。
ひょっとして、「コンピュータのメモリやCPUが、今より不足していた時代の、パフォーマンスのため」
かもしれないのですが(どこかで読んだ気がするので)、分かりません。

これは、個人的な考えですが、
  後置 は、使わず、「前置」 を、使う!
という事で、私自身は、決めています。


iterable/イテラブル オブジェクト とは?(2020.0501, 0504)
この部分については、深く言及しませんでした。
多分、新しい単語で、古い辞書には無いと思われます。
というか、プログラミング用の単語としか思えません。
weblio英和辞書によると、
  iterable:(形容詞) 繰り返し可能な
です。
つまり、
  繰り返し可能なオブジェクト
です。
まあ、少し検索されれば、なんとなく、分かるだろうと思って、また、私も、キッチリ定義できなかったので、
端折らせていただきました。
ですが、今日、JetBrainsAcademy で、Python を、学習中に、

Another way to create a list is to invoke the list function.
リストを作成するもう一つの方法は、list関数 を使う事です。 # Pythonコード multi_elements_list = list('danger!') print(multi_elements_list) # 出力 … ['d', 'a', 'n', 'g', 'e', 'r', '!'] // Kotlin で同じことは、分かりませんが、似たようなコードとして: fun main() { val d = "danger" for (i in d) { println(i) } } /* d a n g e r */ You do so when you want to create a list out of an iterable object:
イテラブルオブジェクト(ループが可能なオブジェクト) から、list/リスト を、
作成したい時には、list関数 を使って、上のコードのようにします。
  // この文章は、上の、Pythonコード に、関して。
  // 2つのコードから、Python でも、Kotlin でも、「文字列」 は、
   「iterable/イテラブルオブジェクト」 だと言えることが分かる。

 that is, a kind of object where you can get its elements one by one.
 つまり、「イテラブルオブジェクト」 とは、「一つ一つ要素を取り出せるオブジェクト」、、こんな感じだと言えます。
A list itself is iterable, so are other collections in Python, as well as a string.
(other collections:主語、 are:動詞、 C/補語/iterable は、省略されている.)
listは、イテラブルオブジェクト であり、
Python における、コレクション(collections、Python にも、名前とか違うが、ある.) も、
文字列 と同様に、イテラブルオブジェクト なのです。


私自身も、今一つ、定義がぼんやりしていたので、言及を控えていましたが、
少しだけ、クリアになったのではないでしょうか?
完全にクリアではないかもしれませんが、そこまでする必要がある人は、私を含めあまりいないと思いますが?
以上、補足説明でした。
ついでですが、「JetBrainsAcademy」 は、素晴らしい、ドキュメンテーション & 問題集 だと思います!

[なんで、String型 が、iterable_object なのか?]
List, Set, Map という「コンテナ/容器/容れ物」に、要素 が入っているように、
String型 という コンテナ に、Char型 の要素 が、入っているからですね。
(だから、Char型って、重要だったのですね。)
ちなみに、List・Set は、Iterableインターフェイス を、継承しているのですが、
Map型 や String型 は、そうではないようです。
思うに、Map、String は、元々、
  iterable、、、iter + able、、、イテラ出来る
という事なのでは??



2019.5.26
まだ、訂正などあるかもしれませんが、やっと、この企画が終わりました。
「4月中に完成させるように、頑張りたい」 と、言っていたので、この場を借りて、お詫びいたします。
毎度の、見積もりの甘さが、たたってしまいました。
ただ、最近、少し、「アンドロイドプログラミング」 は、人気は上昇しているような気がします。
私がアマゾンで予約した、
  作ればわかる!Androidプログラミング Kotlin対応
  10の実践サンプルで学ぶAndroidアプリ開発入門 大型本 – 2019/6/19
  (金宏 和實)
など、6/19 の、発売ですし、
あまり、お勧めできる方法ではないのですが
(私は、アンドロイドアプリ の、バックアップも知らないし)、
「過去の、AndroidStudio」 を、ダウンロード することも出来るようです。
まあ、普通、「セキュリティソフト」 は、入れているので、よほど大丈夫だとは思いますが、
問題は、「アンドロイドアプリ の、バックアップ」 です。
私はよく分かりません。もし、バージョンを変えたりすると、
せっかく作ったアプリが、ダメになるかも、知れません。
(きっと、解決策はあるとは思いますが、私には分かりません)

今後、少し後か、だいぶ後かは分かりませんが、
  Kotlin を、さらに追及しようと、思っています。
よかったら、期待していてください。