プログラミングについて自分が思う思い(あくまで、自分での話2024年8月03日時点) | 株の探求者のブログ

株の探求者のブログ

株に関するプログです。
株取引をしながら、雑談をまじえつつ、
色々と書き込んでいきたいとおもっています。
ただし、株取引は、下手な部類に入ります。

 

 

今の所、自分が、

プログラミングについて思う。

勉強してきた(専門学校ほぼ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とかの解説本が、どういった感じかは、まだ読んでませんが、

うまく、組み合わせれば、独自に、コンパイル可能とか、

夢見ています、片手間ですが。。