今の所、自分が、
プログラミングについて思う。
勉強してきた(専門学校ほぼ1年半間
(『C言語』の基本 基本やポインタ&アドレス、
触りだけHtmlと
テーブルでの表示形式)とか、
途中で休み期間&株への集中勉強期間等で、
かなり空いた期間あり、
独学5年以上(『Objective-c』に関して+2年位))
株以外で、得意なのは、と言われれば、
プログラミングしかないですね。
ちなみに、ある程度理解しているのは、
Python、
これ、独学レベルでも、面白かったレベル。
(GUI選択で、
最初は解説本に出てたTkinter使ったけど、
その後、『Tkinter』の仕様変更がありまして、
使い方が分からなくなりました。
1〜2年前くらいに、
ちなみに、Tkinterの代わりに、
『DearPyGUI』と言う、
良いGUIライブラリ&GUIフレームワークに出会う、
作りたいソフトの基本が作れるか、試してみる、
ほぼ、日本語も、使用上では、
ある程度サポートされていて使えるレベルでした。
その為、色々、本格的に、作りたいソフト、
1:ゲーム。
2:家族から要望が出た管理系ソフト。
で、
簡単な気持ちから、1番目と2番目が逆転、
2:家族から要望が出た管理ソフトを先に作成しようと思い。
まずは、ロジック的に、GUI(グラフィカルユーザーインターフェイス)ではなく、
CUI(コマンド何とか)タイプで、MacのTerminal(ターミナル)で、
コマンド表示で、結果を表示させるタイプを作ってみることに、
打ち込み用の擬似的な元のデータは、用意しておいて。
コマンドタイプで、色々試した所、
結果的には、
プログラミング言語のPythonでは、
処理に時間がかかり過ぎてしまうことが自分なりに理解。
まあ、グッサと言うならば、データの範囲指定、データの期間指定を、
当初想定100年とかにしていた、自分が悪いのですが、
最大で100年分できれば良いかと、安直に考えていたので、
まあ、
プログラムの処理時間と、
メモリー消費が、7GB〜32GB〜50GBと、かなり大変なことに、
ここら辺は、最初の頃に、
メモリー開放の手順が失敗していたこともあり、
その後、12GB位で、推移。
多分、配列データが、かなり大きいためだと思う。
まあ、普通は、限定範囲のデータ以外は、使うときに、
毎回呼び出してその度に、必要なデータ範囲分を読み込んで、
いらなくなった分を、配列を初期化解放するとか、
した方が良さそうですが。
100年分のデータは表示も、普通の処理も、
かなり時間がかかってしまった。
(範囲期間設定しない自分は、おバカ)
このまま、GUI(グラフィカルユーザーインターフェース)には、
持って来れないと思い。
Python以外のプログラミング言語を探してみて、
選定基準は、
0:自分でも使いやすい、分かりやすい。
1:データの処理が早い。
2:メモリーを使いすぎない。
3:Mitライセンスか、アパッチ2ライセンス形式、
で、利用できるもの。
家族に頼まれている管理ソフトや、
ゲーム系は、いづれ、有料アプリ配布したいと、
守銭奴本心が、出ています。
(ちなみに、Macでの主力言語、Swiftを避けている理由は、
私怨です。Objective-Cの、座を、奪ったイメージも大分あるため、
Swiftを出てきてから1〜2年後に、学ぼうと半分投げやり気分で、
勉強しようとしましたが、投げやりなので、頭入らなかった。独学失敗。
ただ、2024年、Swiftへの私怨も、大分消えており、
SwiftUIでも、いいかなという気分もあります。)
プログラミング言語の独学への道へ進んでいます。
複数の言語を選別して、
1つ目、関数タイプの言語を独学。
2つ目、
高速処理で、その頃、有名だった、
オブジェクト指向の、
『CRYSTAL(クリスタル)』言語を、独学。
オンラインショップのアマゾンでの、
英語のKindle書籍を購入。
翻訳ソフトを使いながら翻訳。
日本語化。
(アマゾンにて、本タイプの英語本も購入。)
勉強のために、
TVに、iPadMini6に、
TypeCのMacBook用のHDMI出力を繋げて、
TV出力、KIndle側の出力文字の大きさ調整。
日本語化したのを、音声化ソフトで、日本語化音声作成。
音声化してmp3化。Mac標準音楽再生ソフトで、聴きながら、
TV側のKindleで、書籍画面を、表示させており。
『次の項目へ移動』用に、
ipadとMacとKindle対応の、
送りボタンのあるリモコンを購入。
あと、Mac標準の音楽再生ソフト操作用に、ミニキーボードも購入。
ちなみに、ランニングマシンの操作パネル上に、
卓上配置スペースを作り、
(注意:
あくまで、自分の悪改造ですので、
ランニングマシンを改造して、
ランニングマシンに拡張して、
もし事故が、起きても、自分は、責任は取りませんので、
各自、
ランニングマシンの改造は、しないように、お願いします。
)
ランニングマシンで走っていました。
夏前〜5月までは、
夏6月〜は、
ダメですね、熱中症にも、なりかけて、
ランニングマシンは、秋か冬までお休みですね。
140トン魔人のお通りだよ。
)
えっと、英語の参考本の3分の2位まで読んだのですが、
後で、分かったのですが、
コンパイルされたソフト&アプリは、
他ライブラリを、使用している場合は、
他ライブラリを、使用している場合は、
開発環境の、
Crystalと、ライブラリインストール用の、
Shardや、Ymlファイル等を、少し設定した上で、
インストールが、必要なことが、多いいと分かってきたので、
一度、見合わせることに、
3度目、
オブジェクト指向 + 関数型 の、
『Scala言語』+『Scala Native』+『Scala CLI』
Java動作実行(JVM)使用の言語ですが、
Scala Nativeを使用すれば、
Java言語(Scalaでも通常ではJVM使用)の、
Java動作実行環境(JVM)使用料ライセンス周りを、
回避可能かと思っています。
えっと、大分、間違えていたみたいです。
現在のScala CLIでは、
Nativeイメージの作成で、
-graalvm-java-version
--graalvm -version
ごめんなさい、再度訂正、
色々調べているところです。
調べ中です。
graalvmは、ネットで調べると、
最近では、商用利用に関しては、
無料なタイプと、
商業向けのタイプと分けてあるみたいですね。
(無料のアマゾンの会社配布等の、
Java動作環境もあるようですが。
他にもあるみたいですが。)
ちなみに、
現在のScala言語の、
理解レベルは、20%〜30%位です。
Scala3を基本に独学して(Scala3は英語本多いい)、
(Kindle版と本タイプの両方購入が多いい)
60%位は理解。
Scala2の本も少しずつ参考にしていく予定。
(
Scala3本と、Scala2本。
どの参考本も書いてある箇所が全て重複ではないので、
どの参考本もそこにしか、書いてないことや、表現の仕方が素敵、
英語、日本語問わず)
ちなみに、配列タイプは、変更可能なタイプの、
可変の 『ArrayBuffer』を使う予定。
コマンドタイプのみでですが、
試しに、『ArrayBuffer』で、
結構な10年分くらいのデータで、
試しにメモリー消費、処理速度を見てみたところ。
妥協できるレベル。
10年分くらいなら、使用可能できそう。
(自分のマシン環境:27インチiMac2019、i5=3.7Ghz6コア、メモリ=64GB)
(動作させたいマシンは、MacBook2017モデル、メモリー=16GB)。
ちなみに、使ってみたいScalaでの、
GUI(グラフィカルユーザーインターフェース)は、
Scala3対応、 Scala Native対応(Scala CLI経由)なのは、
少し前までも、
『Interim』というライブラリが、
ありましたので、使わせて頂きたいと思っています、
使わせて貰おうと思っています。
悪戦苦闘しました。(Mitライセンス)
一つ理解したのは、Interimの中での、Sample内で、
ソース追加した方が楽(ビルド設定のSbt設定が色々と)。
スナップショットのフォルダー使用では、
コンパイルエラー出るみたい。
リリースのフォルダー使用では、
コンパイルが、無事に通る。
この、リリースフォルダーを使用するのが、
良いことに判るのに、1〜3ヶ月かかった。
今後、予定では、
ビルド設定の Sbt設定の仕方や構文を学んだ方がよさそう。
無論、他ライブラリの読み込み&ビルド設定等もさらに研究した方が良い
Jsonファイル等の書き出し&読み込み等も、考慮に入れたいし。
ただ、プログラミンの移り気な性格が、出てきており、
ただ、プログラミンの移り気な性格が、出てきており、
Scala3 +Scala Native +Scala CLI で、
動く作りたいソフトのを、作る予定&作りながらをしながら、
別アプローチとして、
保険としては、
『Nim言語』を、少しずつみていきたいかと。
こちらは、日本語の本が、1冊出ているのと、
Pythonと比較して色々考えられているみたいな言語なので。
いや、Juliaは、とかも聞かれそうですが、
今の所、
『Nim言語』と、後、『LLVM』の本とか、入手しています。
Nim言語だと、C言語への書き出し。
もしくは、最新では、C++への書き出しも対応??
とかも、あるみたいなので、
LLVMとかの解説本が、どういった感じかは、まだ読んでませんが、
うまく、組み合わせれば、独自に、コンパイル可能とか、
夢見ています、片手間ですが。。