パスワードを忘れた? アカウント作成
11882199 story
Python

初めて学ぶプログラミング言語としてはPythonよりもVBの方が適切? 93

ストーリー by hylom
Pythonでできない複雑な構造ってなんだ 部門より
headless 曰く、

Slashdot「Justified: Visual Basic Over Python For an Intro To Programming」より。

英国でICT/コンピューティングを教えるBen Gristwood氏が、「Visual BasicはPythonほど役に立たない」とする生徒の親に返信したメールの内容を公開し、(他の言語への入り口として) Visual Basicを初心者向けのプログラミング言語に選択したことは正しいと主張している。

Gristwood氏は「現在Pythonが人気であることを理解している」と述べた上で、「ただし、この言語もC言語をベースにしている。より複雑な構造となった場合、Pythonでは処理できず、どうしても(初心者には考えられないほど複雑な)C言語に頼らざるを得ない。VBは2つの言語の中間に位置し、複雑な決まりを必要とせずに概念を教えることができる。たとえば、変数の宣言などはGCSEやAレベルの試験(いずれも英国の統一試験)で必要となるが、こういった処理をPythonを学ぶ生徒たちは必要としない。」としている。

米国ではAP Computer Science(大学先修課程のコンピューターサイエンス科目)が1984年に導入されて以降、使用するプログラミング言語はPascalからC++、そしてJavaへと移行してきた。College Boardでは、2016年に開始される新しいAP Computer Science Principleコースについて、プログラミング言語の選択を教師に委ねている。皆さんなら、高校生が学ぶのに最適なプログラミング言語として、どのプログラミング言語を選択するだろうか。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2015年01月23日 17時55分 (#2748945)

    >Gristwood氏は「現在Pythonが人気であることを理解している」と述べた上で、「ただし、この言語もC言語をベースにしている。

    文法がALGOLの系譜をひいてるってだけ。

    >より複雑な構造となった場合、Pythonでは処理できず、どうしても(初心者には考えられないほど複雑な)C言語に頼らざるを得ない。

    複雑な構造ってのが具体的に例示しないとなんとも言えないが、それ「C言語をベースにしている」って部分と関係なくね?っていうか、そもそもそんな複雑な構造ってVBじゃ処理できなくね?って疑問が。

    >VBは2つの言語の中間に位置し、複雑な決まりを必要とせずに概念を教えることができる。たとえば、変数の宣言などはGCSEやAレベルの試験(いずれも英国の統一試験)で必要となるが、こういった処理をPythonを学ぶ生徒たちは必要としない。」としている。

    それ、型システムの違いじゃん。最初の「この言語もC言語をベースにしている」が全く関係なくなる。

    • リンク先を読めばそれほどおかしなことは言っていない。

      ・PythonではいらないけどVBではGCSEの試験に必要な変数宣言がある。
      ・生徒がA-levelになってC++やC#に進んでいくときに使える概念も備えている。C++やC#(を修得させること)が私的にはゴールだ。
      ・Pythonのシンプルな文法と、より複雑なC++,C#のちょうど橋渡しになる言語。
      ・教えるのは12歳くらいの子供。大学行く頃にはC++などへどうぞ。
      ・このメールは、生徒の親宛に書いた個人的意見で、どの言語もその特徴が長所でもあり短所でもあるとわかっている。
      ・Pythonをけなすために書いたわけでもないし、親宛の手紙にエッセー書くような力入れもしない(私の一日に四時間追加でもないかぎりね)。

      試験範囲を教えないといけない教師の立場としては、妥当な回答ではないかと思うよ。
      きっと、親たちは自分が子供のころプログラミング言語の試験なんて受けていなくて
      「うちの会社のIT部門の若手に聞いたら、VBなんて今どき教えるものじゃないというじゃありませんか、先生!」
      とか鬱陶しいこというんだろうね。

      大体、ここにいる「若いころBASICでプログラミングにハマってしまったおっさん」の皆さん、
      いまC++やC#を使っているときBASICの呪縛で苦しんでたりしないでしょう? あまり心配する必要ないと思うなー。

      親コメント
    • by Anonymous Coward

      PythonのC APIよりCOM(?)の方が簡単だと言ってるんだよ。多分…

      • by Anonymous Coward

        丁度、互換性維持用のCOMをVB6で作ろうとして、Closeメソッドが予約語でにっちもさっちもいかなくなった所だ…。
        まぁコレはCOMじゃなくてVBの言語仕様がちと微妙なだけかもしれないが。

        でも、じゃぁVB.NETでCOM作るか、ってやってみたら、引数の無いデフォルトプロパティが指定できずに頓挫。
        どーすりゃいいんだorz
        ※Recordset("hoge").Value を Recordset("hoge") として呼ぶ方法が作れない。

        まぁMSとしたらCOMは捨てたことになってるからねぇ。
        そういう意味でも、今からVB6を学ぶのは無駄っぽいけど。

        VB6自体は悪い言語ではないね。
        オブジェクト指向もソコソコ可能だし。インターフェイスの継承ができることを知らない人は多いね。
        もし、エラー処理に構造化例外が採用されていたなら、もっと長生きしたと思う。

    • by Anonymous Coward

      なんとなく、ポインタを理解できないまま教師になってしまった哀れなオジサンの臭い

      • by Anonymous Coward

        もしかして束縛も理解出来ず、C言語がとか、複雑な構造がとか言ってるとか?

  • by CliffordSakaki (37720) on 2015年01月23日 17時43分 (#2748934)

    Pascalは・・・?

    • by minemo (41273) on 2015年01月23日 23時00分 (#2749095) 日記

      これ、釣りですよね?
      たとえ釣りだとしても1票。
      VB.NETは知らないですが、それ以前のVBだと大切なものを壊しそうで…

      #BasicといえばROM Basicの世代。Quick Basic(QBasic)がそれっぽく書けるのが悲しい、VBAも以下…

      親コメント
      • by Anonymous Coward

        ではPascalの開発環境を用意してみてください。

        • by Anonymous Coward on 2015年01月24日 0時59分 (#2749149)

          お手軽さならLazarus [freepascal.org]が楽かな? あまりOSも選ばんしインストールも楽。
          見かけGUIアプリ作成専用っぽいけどもちろんCUIアプリの開発にも使えるのでお勉強にもあまり困らない。

          もちろん素のFreePascal [freepascal.org]を使うって方法もある。
          個人的にはコレ+emacsという組み合わせが一番しっくりくる。emacsはともかくとして基礎を叩きこむにはアリ?

          その他にもGNU Pascal [gnu-pascal.de]って手もあるけどこちらは最近追っかけてないのでようわからん。
          あとFreeDOS [freedos.org]に適当なTurbo Pascal [embarcadero.com]なんてレガシーな手もある・・・かな?

          てなわけで開発環境は比較的簡単に揃えられるんだけど、いい入門書が手に入りづらいかも。
          単に文法を覚えるだけならどうにでもなるけど言語思想を感じられるようなものがあまりなくて・・・

          親コメント
          • by minemo (41273) on 2015年01月24日 8時27分 (#2749215) 日記

            市販のTPでいえば添付のマニュアルが良いと思うのですがすでに売っていないですし。
            その当時萌えた学校なら付属図書館にあるかも。
            あとは書店に行ってCの入門書を見るとか…

            親コメント
        • by ume20s (42239) on 2015年01月24日 9時18分 (#2749229) 日記
          つ UCSD-p
          親コメント
      • by Anonymous Coward

        教育用言語を釣り呼ばわりとは酷いやつだな。

  • 今はPHPでWebをやっているわけですが、PHPそのもの以外にHTMLとかJavaScriptが出てきてWebサーバーの話が出てくるわけですよ。
    さらにフレームワークとしてFuelを使っていて、幸いテンプレートエンジンは無い。
    ここにDBが出てくると、どれが何で関係が何かを若者に説明するのが嫌になります。
    VB6みたいなまるっと収まっている統合開発環境がとっかかりには良いと思う。

    自分自身はHTMLと言語を別々に覚えて、過去の遺産を有効活用して開発効率を上げるためにフレームワークっぽいものを作ったので一個ずつ覚えれてた。
    --
    見た目大事。
    • by Anonymous Coward

      インストール、セットアップの敷居がとにかく低い点も大きいと思う。
      言語さわる以前のトラブルは、やる気無くすので。

      • by Anonymous Coward

        だったらJavascriptかな。
        最近の安タブレットだとメモリもぎりぎりでHDDも足りなくて、インストールが大変。
        JavascriptならChromeでコンソール開けばいいし。

      • by Anonymous Coward

        ×敷居

  • by st1100 (45287) on 2015年01月23日 23時37分 (#2749116)

    ぴ^h
    変数名を日本語で表記できると初心者にはわかりやすいと思う。
    しかしながら、Windowsコマンドは愛用しているがお薦めはやっぱりできない。

  • by Anonymous Coward on 2015年01月23日 17時26分 (#2748922)

    OSを破壊できるのは若いうちだけだから、ぜひチャレンジしてほしい。

    • by Anonymous Coward

      はじめてのC [gihyo.jp]にドキドキするのよね。

    • by Anonymous Coward

      OSを破壊できるのは若いうちだけだから、ぜひチャレンジしてほしい。

      最近のOSだとどうでしょう?
      DOSだとINT 13Hでクリーンな世界になったことは2〜3度ありますが。

      • by SteppingWind (2654) on 2015年01月23日 19時25分 (#2749000)

        簡単簡単. ドライバを書いていれば, panic画面を見るのが普通になります.

        # というかpanic画面に落っこちるだけでも十分に強固なOSだと思う

        親コメント
        • by Anonymous Coward

          そんなの、破壊した、とは言わんだろ。

  • by Anonymous Coward on 2015年01月23日 17時29分 (#2748924)

    余分なものがないので、教育には適している。

    • by Anonymous Coward

      Template Haskell...

    • by Anonymous Coward

      自分もHaskellかPythonだなぁ
      VBはいくらなんでもレガシーすぎる
      シンプルさならQuick BasicかFree Basicだろう

  • by Anonymous Coward on 2015年01月23日 17時36分 (#2748929)

    VBはエクセルマクロ以外ではすっかり使うことなくなったけど、
    一番初めにプログラムの楽しさを実感できたから未だに好きな言語だな。

    Cは何かが出来たという手応えがなくて未だに魅力ないな。C#は使うけど別物だしね。

  • by Anonymous Coward on 2015年01月23日 17時41分 (#2748932)

    Pythonは言語だと思うけど、VBって処理系ですよね?
    いったい何を比較したいんだろ??

    • by Anonymous Coward

      じゃあ、VBの言語はなんなんだよ。

      • by Anonymous Coward

        Basicの方言であるVisual Basic。なお、処理系の名称もVisual Basic。たとえるならマリリン・マンソンみたいなもんだね。

  • by Anonymous Coward on 2015年01月23日 17時43分 (#2748933)

    VB.NETだと思えばいいのか?
    まぁ、VB.NETならC#に実装されている機能のほとんどはカバーしてるだろうしな...
    ポトペタから始めて、VisualStudio並の巨大アプリを作ったり、NuGetしたりとか、深く考えずにAsync/Awiatしとけば気持ちいいんでしょ?

    • by Anonymous Coward

      VB.NETならオススメしない。
      素直にC#で学んでも、今さら昔々のBASICからの以降でも無いだろうし、何ら問題ないだろ。

      VB6の様な融通が利く言語なら学ぶのには易いと思うが、最近の動作環境を考えると・・・。
      何かをデッチアゲるには凄く容易いから、一時期はテスト用に使う定番だったけど。

      知人に一人、プロトタイプを見せる為に未だに使っている奴も居るが。
      ちょっとなれたら画面の構成なんぞは打ち合わせしながらその場でまがりなりではあるが動くものが即出来るから。

  • by Anonymous Coward on 2015年01月23日 17時45分 (#2748935)

    GUIを作ることによってプログラムへの興味がでる
    いきなりC や Python のようにCUIベースで学ぶよりプログラミングは難しいっていう先入観をなくせる
    ただVBばかりやってるとダメなプログラマーしか生まれないからある程度触らせて別の言語に移すべき

  • by Anonymous Coward on 2015年01月23日 17時45分 (#2748936)

    言語仕様が単純で覚えやすいから。

  • by Anonymous Coward on 2015年01月23日 18時47分 (#2748975)

    http://smallbasic.com/ [smallbasic.com]
    飽きたら卒業な。

    #「初めて」のレベルによる

    • by Anonymous Coward

      Small Basicはシンプルにしすぎてできることが少なすぎて正直つまらない

  • by Anonymous Coward on 2015年01月23日 18時55分 (#2748981)

     やっぱり初心者にとって一番大事なのは、プログラムを正しく書いたら相応の結果が返ってくる、という点を実感することだと思います。そしてそれを一番実感しやすいのはグラフィカルなフィードバックであり、そういう意味ではProcessingをおすすめします。ProcessingであればJavaやCへの移行も比較的簡単ですし、オライリーから出ているリファレンスもわかりやすくて入門にはぴったりではないでしょうか。

    • by Anonymous Coward

      視覚的フィードバックということでいうとステップ実行できるデバッグ環境があるかどうかでも違ってくる。特に初心者の場合、ステップ実行しながらどう処理されるか確認するというのも、勉強のうちだしね。

  • by Anonymous Coward on 2015年01月23日 18時59分 (#2748986)

    改行やインデントのない読みにくいコード量産されたらたまらん。
    嫌でも読みやすいコードを書かなければならないというのはPythonの売りだろ?
    画面いっぱいごちゃごちゃのワンライナーとか悪夢だろ。
    初学者がそんなの覚えたら、いや、ほんと悪夢だからやめてくれ。
    というか、いい年こいたおっさんがそういうの書いてるの見ると痛々しい。
    三つ子の魂百までというから、初めにPythonは間違ってないと思う。
    VBの前でなくても、後から矯正するのでもいいから。

  • by Anonymous Coward on 2015年01月23日 20時55分 (#2749033)

    "美しい日本のコンパイラ"...

  • by Anonymous Coward on 2015年01月23日 21時59分 (#2749078)

    Gristwood氏の反論にはそれほど納得できないが、すくなくともVisualBasicの方がPythonよりは役に立つ。
    というよりPythonの現在の立ち位置が微妙すぎて……

  • by Anonymous Coward on 2015年01月23日 22時20分 (#2749082)

    話題とは違う言語だけど、N88-BASICでやや大きなプログラムを書いて、きちんとした書き方の大切さを実感した懐かしい思い出がw
    デタラメな書き方もできてしまう言語の効能というかなんというか。

    まあ、そのままスパゲティなプログラミングが染み付いてしまう人も多くいそうだけど。

  • by Anonymous Coward on 2015年01月23日 23時23分 (#2749105)

    2~3時間しか「アルゴリズムとプログラム」の単元には使えません。そういうことで、Scratchを選択しました。

    専門コースではJavaを教えています。
    入門から応用までの関連書籍が充実していて、ユーザが多く、自宅と家庭で同じ開発環境が準備しやすくて、用途が広いことが理由と言えば理由でしょうか。
    個人的にはC言語でハードウェアを制御させたいのですが、許してくれません。

  • by Anonymous Coward on 2015年01月24日 0時37分 (#2749144)

    実用性の高い言語を学ぶというのは
    それが仕事、ノルマ、労働を連想させてしまうので
    モチベーションが下がりまくる。

    Lisp系とかLuaとか、一般の労働と無縁の言語がいい。

typodupeerror

日々是ハック也 -- あるハードコアバイナリアン

読み込み中...