Flowgorithmで思い出した30年前のCASEの未来予想

モンゴル
この記事は約6分で読めます。

1月中旬から後期の授業が始まります。今期はこれまで教えていたNetwork Basicsに加えて2つの新規授業も担当することになり、現在せっせとカリキュラムを考え、授業教材を作成しています。そのうちの1つが「Fundamentals of Algorithms」というタイトルで、アルゴリズムの基礎を教える授業です。

どのように教えるか悩んでいる中、他の高専の先生から「Flowgorithm」というツールを教えていただきました。

Flowgorithmとは
「Flowgorithmは、グラフィカルフローチャートに基づいた無料の初心者向けプログラミング言語です。
通常、学生がプログラミングを初めて学ぶ際には、テキストベースのプログラミング言語を使用することが多いです。しかし、使用するプログラミング言語によっては、簡単な場合もあれば非常に困難でストレスを感じる場合もあります。多くの言語では、単に「Hello, world!」というテキストを表示するためだけに、混乱するようなコードを何行も書かなければならないことがあります。これはほとんどのオブジェクト指向言語では普通のことですが、初心者の学生にとってはこれらの概念を学ぶにはまだ早い段階です。
フローチャートを使用することで、典型的なプログラミング言語の細かいニュアンスではなく、プログラミングの概念に集中することができます。また、Flowgorithm内でプログラムを直接実行することができます。

アルゴリズムを学ぶ重要性

プログラミング言語は無数にありますが、それぞれ独自の文法やルールがあります。しかし、どの言語を学ぶにしても、まずはアルゴリズムの基礎を理解することが最も重要です。

Flowgorithmの主な機能は、視覚的にフローチャートを作成できる点ですが、さらにフローチャートから複数のプログラミング言語のコードを自動生成してくれるます。対応している言語は多岐にわたります。

例えば以下の問題に対して、右のようなFlowChatを作成すると以下のようなコードを簡単に出力できます。

問題:「ある広場は、n×m サイズの長方形です。この広場を花崗岩の石板で覆うことに決まりました。それぞれの石板のサイズは a×a です。
広場を覆うのに最低限必要な石板の枚数はいくつですか?石板を壊したり分割したりすることはできず、広場を完全に覆う必要があります。広場を超える部分があっても構いませんが、石板の辺は広場の辺と平行でなければなりません。
入力 1 行に正の整数 n, m, a が与えられます。1<=n,m,a<=10⁹。
出力 必要な石板の枚数。
例 入力: 6 6 4、出力: 4」

Pythonの場合:
print("Please input the tiles' size a:")
a = int(input())
if n % a != 0:
    tilenum1 = float(n) / a + 1
else:
    tilenum1 = float(n) / a
if m % a != 0:
    tilenum2 = float(m) / a + 1
else:
    tilenum2 = float(m) / a
tiletotal = tilenum1 * tilenum2
print("Tile number is " + str(tiletotal))

Java Scriptの場合:
function main() {
    var n, m, a;
    var tilenum1, tilenum2, tiletotal;

    window.alert("Please input the theater's width n: ");
    n = Number(window.prompt('Enter a value for n'));
    window.alert("Please input the theater's length m:");
    m = Number(window.prompt('Enter a value for m'));
    window.alert("Please input the tiles' size a:");
    a = Number(window.prompt('Enter a value for a'));
    if (n % a != 0) {
        tilenum1 = (double) n / a + 1;
    } else {
        tilenum1 = (double) n / a;
    }
    if (m % a != 0) {
        tilenum2 = (double) m / a + 1;
    } else {
        tilenum2 = (double) m / a;
    }
    tiletotal = tilenum1 * tilenum2;
    window.alert("Tile number is " + tiletotal);
}

Flowgorithmを使えば、ChatGPTのようなAIと同様に、プログラミングのコードが自動生成されます。ITエンジニアはプログラムそのものを学ぶ必要がなくなるのでしょうね。高専で「ITエンジニアに必要なスキル:テクノロジーの世界で成功するために必要なこと」というタイトルのプレゼンを繰り返し行なっていますが、改めて自分のアドバイスが正しかったと実感しました。

ITエンジニアに必要なスキル例:

  • 問題解決能力
  • 論理的なアルゴリズム設計とシステムデザイン能力
  • 顧客業界の知識
  • データ分析や機械学習のスキル
  • AIの知識
  • 優れたコミュニケーション能力

CASEの時代を思い出して

そんなことを考えているうちに、30年以上前の記憶がよみがえりました。私がITエンジニアになりたての頃、シリコンバレーでSEトレーニングを受けていたときのことです。講師が「将来、CASE(Computer Aided Software Engineering)が進化すれば、プログラムを書く必要はなくなる。エンジニアにはコミュニケーションスキル、プレゼンテーションスキルが重要で、問題解決や顧客要件の定義などの上流工程を担当し、下流部分はCASEが自動化する」と話していたのを覚えています。当時はそれが実現するとは思えませんでしたが、いまやその未来が現実になっています。非常に感慨深いものがあります。

モンゴルでFlowgorithmを使って教材を作りながら、ふと30年前に聞いたCASEの未来予想を思い出した1日でした。

今日のモンゴル語:
Мэдээллийн технологийн инженерүүдэд зайлшгүй шаардлагатай ур чадвар: Технологийн салбарт амжилтанд хүрэх чухал ур чадварууд
(Medeelliin tyekhnologiin injyenyerüüded zailshgüi shaardlagatai ur chadvar: Tyekhnologiin salbart amjiltand khürekh chukhal ur chadvaruud)

IT エンジニアの必須スキル: テクノロジー業界で成功するための必須スキル

コメント

タイトルとURLをコピーしました