2004年09月15日
川俣晶の縁側技術関連執筆情報total 3032 count

熱血VBプログラマ応援団 最終回 VBプログラマにとってのUML ―― VB.NETでもコーディングの方法は文字だけではない ――

Written By: 川俣 晶連絡先

 下記の記事が公開されました。

熱血VBプログラマ応援団 最終回 VBプログラマにとってのUML ―― VB.NETでもコーディングの方法は文字だけではない ――

 全部で13回の連載となりましたが、2週間ごとの連載でしたので、あっという間に終わってしまった感じがあります。本当は、読者からの質問を受けつつダラダラと続けながら、ちょっとだけVBプログラマが良い気持ちになれるようにして行ければ良かったと思います。ちょっと残念。

連載終了記念のオマケ §

 C#で書いた素数計算のプログラムをVB.NETで書き直したものです。

 まだ珍しい(かもしれない)、VB.NETで書いたコンソールアプリケーションと言うことで。

 素数を知るために実行するものではなく、マシンやコンパイラや実行環境の速度比較などに使うものです。そのため同じ計算を指定回数繰り返します。デフォルトでは、100000までの素数を10000回繰り返します。オプション指定をしない場合、計算だけして何も出力しません。

Module Module1

    Private Const repeatCountDefault As Integer = 10000

    Private Const sizeDefault As Integer = 100000

    Private Sub usage()

        Console.Error.WriteLine("usage: prime [-d][-l][-c][SIZE][REPEAT_COUNT]")

        Console.Error.WriteLine("options: -l   list all primes")

        Console.Error.WriteLine("         -c   output number of primes")

        Console.Error.WriteLine("         -d   output time of process")

        Console.Error.WriteLine("SIZE default is " + sizeDefault.ToString())

        Console.Error.WriteLine("REPEAT_COUNT default is " + repeatCountDefault.ToString())

    End Sub

    Function Main(ByVal args() As String) As Integer

        Dim outputList As Boolean = False

        Dim outputCount As Boolean = False

        Dim outputSpan As Boolean = False

        Dim repeatCount As Integer = repeatCountDefault

        Dim size As Integer = sizeDefault

        Dim notOptionCount As Integer = 0

        For i As Integer = 0 To args.Length - 1

            If args(i) = "-?" Then

                usage()

                Return 2

            End If

            If args(i) = "-l" Then

                outputList = True

            ElseIf args(i) = "-c" Then

                outputCount = True

            ElseIf args(i) = "-d" Then

                outputSpan = True

            Else

                Select Case notOptionCount

                    Case 0

                        size = Integer.Parse(args(i))

                    Case 1

                        repeatCount = Integer.Parse(args(i))

                    Case Else

                        usage()

                        Return 2

                End Select

                notOptionCount += 1

            End If

        Next

        Dim startTime As DateTime = DateTime.Now

        Dim flags(size - 1) As Boolean

        For r As Integer = 0 To repeatCount - 1

            ReDim flags(size - 1)

            For i As Integer = 2 To size - 1

                If Not flags(i) Then

                    For j As Integer = i * 2 To size - 1 Step i

                        flags(j) = True

                    Next

                End If

            Next

        Next

        Dim endTime As DateTime = DateTime.Now

        If outputList Then

            For k As Integer = 2 To size - 1

                If Not flags(k) Then Console.WriteLine(k)

            Next

        End If

        If outputCount Then

            Dim count As Integer = 0

            For k As Integer = 2 To size - 1

                If (Not flags(k)) Then count = count + 1

            Next

            Console.WriteLine("found: " + count.ToString())

        End If

        If outputSpan Then

            Console.WriteLine(endTime.Subtract(startTime).ToString())

        End If

        Return 0

    End Function

End Module

想定される突っ込みへの回答 §

 あえて退屈なソースに目を通して、ここまでスクロールされたあなただけに特別にお答えしましょう。

 想定される突っ込みへの回答です。想定される突っ込みとは、以下のようなものです。

 あなたは、それよりも重要なことは、VBに込められた潜在的な力を、より的確に引き出して解放してやることです。いかにVBは正しいと主張したところで、使い方が間違っていれば、良い結果は得られません。などと書いていますが。

 あのVBプログラマ達が、オブジェクト指向プログラム言語であるVB.NETを正しく理解して、使い方を間違えないなどと本気で思っているのですか?

 もちろん、ずっとVB6を使ってきて、他のプログラム言語を知らないVBプログラマが、そのままでVB.NETを正しく使いこなし、そこに秘められたパワーを発揮できるとは思っていません。その点で、VBプログラマは勉強をする必要に迫られていると思います。おそらく、勉強をしてそのハードルを超えていくVBプログラマもいると思うし、残念ながら勉強しないVBプログラマもいることでしょう。

 しかし、それはVBプログラマに限った問題ではありません。人生は死ぬまで勉強ですが(もちろん、学校に通うとか教科書を読むという意味ではなく)、学び続ける人もいれば、学ぶことをやめてしまう人もいます。VBプログラマが直面していることは、それと同じに過ぎないと思います。

 ですから、もし勉強してハードルを乗り越えていこうと思う人達が、たとえ少人数でもいるのなら(願わくば大人数であって欲しいものですが)、それを応援する価値があると思います。

Facebook

キーワード【 川俣晶の縁側技術関連執筆情報
【技術関連執筆情報】の次のコンテンツ
2004年
09月
17日
例外をキャッチする条件を指定するWhenキーワード
3days 0 count
total 3597 count
【技術関連執筆情報】の前のコンテンツ
2004年
09月
08日
やさしく読む「XML 1.0勧告」 第25回 外部実体における統一資源識別子(URI)
3days 0 count
total 2290 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20040915113449
サイトの表紙【技術関連執筆情報】の表紙【技術関連執筆情報】のコンテンツ全リスト 【技術関連執筆情報】の入手全リスト 【技術関連執筆情報】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.