見出し画像

ソフトウェア工房孫風雅 ”プログラミング言語 難易度” 検索結果説明その8

ソフトウェア工房孫風雅です。

講師が最近インターネット検索で???と思ったアイテムがありますので
共有させて頂きたいと思います。

検索キーワード:”プログラミング言語 難易度”
検索エンジン:GOOGLE
検索実行日時:2022年8月21日 12:00-
(検索結果は本文以下の==の後の記載に変更しました)

講師が????と思ったのがランクの高いとレイティングされている言語と
ランクが低いとレイティングされている言語とになります。

今回は VBA になります。(引き続きVBAに関する講師メモです)

VBAは複数の検索結果でいづれも難易度が低いと分類されています。

VBAに関して、いくつか講師が知っているVBAメモを公開したいと思います。

二つ目はExcelのVBAでは論理的矛盾が発生する事があるという点です。
これは、所謂、ExcelVBAのバグではないかとも考えていますが、
逆にこういった使い方をしてはいけないのかもしれません。

それは、大量のデータを扱う事です。
大量とはどのくらいかというと、100万件以上の本データ(一行に50個ぐらい個別データが存在します)と100万件程度の比較データを扱う場合で、これら2件のデータを比較して、部分比較データが同じであれば、
比較データ側の別データを本データの一部、個別データにコピーするという処理のものです。

何故、不具合ではと考えるかというと、100万回の繰り返し処理を行うとVBA処理が終了せず、アプリが動作不能の状態になります。
ループ処理の終了地点にブレイクポイントを設定していても、1日経過しても止まりません。
然しながら、繰り替えし処理を100回ほど自分でワンステップ実行してみましたが、問題無く動作します。その後F5(終了まで実行)で実行を行うと、戻ってきません。
当初のプログラムの作りでは100万件の配列の本データを全てUPDATE処理を終えてから、ファィルに書き出す動作にしていました。
どうも、動作が戻ってこないので、そこで、非論理的な現象だと思ったので、書き込み処理を1行のデータ処理を終了時、毎回行うように変更しました。(全データを一気にファィルに書き出しー>1行ずつファィルに書き出し に変更です)

すると、処理が戻らなくなる前まで、ファィルへの書き込みが行われます。
そして、確認できたのが、何回実行してみても、全く同じ行の書き込み終了後でファィルのUPDATEが終了し、処理が戻ってこなくなっているという事でした。
また、100万件の本データはそのままで、比較データを100万件から30万件程度に絞ってみました。
その結果、繰り返し処理の終了時点のブレイクポイントで処理が止まるようになりました。

結果、VBAでは大量のデータの扱い(100万件以上)に制約があるのではとの結論に至りました。(講師のExcel環境ではピボットテーブルが100万件程度しか対象とできないのも気になっています)

講師の経験が、皆様のお役に立てれば幸いです。

===================================
複数の検索結果は概ね以下の通りです。

難易度高い順(結果A)
ランク5
C++
C言語

ランク4
JAVA
Go

ランク3
C#
Swift
Google Apps Script
Kotlin

ランク2
VBA
Ruby
PHP
Python
Typescript
JavaScript

難易度高い順(結果B)
ランク3
C++
R

ランク2
Python
Go
Kotlin
JAVA
Swift
C#

ランク1
PHP
JavaScript

難易度高い順(結果C)
ランク3
JAVA
R言語
C言語
C++

ランク2
Go
Swift
Python
C#
Perl

ランク1
JavaScript
PHP
Ruby
VBA
VB/VB.NET
アセンブリ言語
Kotlin

この記事が気に入ったらサポートをしてみませんか?