パスワードを忘れた? アカウント作成
15333215 story
プログラミング

プログラミング言語を一つ学んだら別の言語も簡単に習得できるという考えは正しいのか? 165

ストーリー by nagazou
日本語覚えても英語は話せない 部門より
ミシガン大学教授のMark Guzdial氏は、同業のコンピューターサイエンス(CS)の教育者二人から、最初のコースでプログラミング言語を気にする必要はない。学生が概念をしっかり学んでいれば、次に学ぶ言語では最初に学習した言語の知識を応用できるとする意見を聞いたという。しかし、Mark Guzdial氏本人は、過去の経験などから二つ目の言語習得はそう簡単ではないとして、先の二人とは異なる考えを持っている(Mark Guzdial氏のブログGIGAZINE)。

LISPやMICRO-PLANNERのように、基本的な概念が全く異なる第二言語の学習は、第一言語の学習と同等かそれ以上に難しい可能性が高い。学生がデータサイエンティストになりたいのであれば、C言語を学ぶよりもRやPythonを学ぶ方が合理的だ。こうしたことから、Mark Guzdial氏は、「なぜ最初に学ぶプログラミング言語は重要ではない」という考え方が定着しているのか考えるようになったそうだ。 同氏の考えとしては、1960年代後半にCSカリキュラムが定義されたとき、プログラミングの数学的基盤に重点が置かれていた。このため、現在教育者になってるような人は、現代の学生と比較すると数学的に強い基盤を持っている。このため、言語の違いは表記法の違いに過ぎないと考えているのではないかとしている。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by asano_nagi (37547) on 2021年06月29日 16時58分 (#4059948) ホームページ
    ・Modula-2 を学んだら、Cの構造体とポインタのたすき掛け(?)が理解できた。
    ・smallTalk を学んだら、C++でOOPSできるようになった。
    ・今では、C++に過剰適応してしまい、C# も Java も書けない。

    近しい言語は、思想を理解するには有効かなと思います。
    C の形定義とポインタが、Modu;a-2 ですっきり理解できたとか。

    でも、ひとつの言語に過剰適応するすると、他の言語にうつるのが、とってもハードル高いです。
    --
    ¶「だますのなら、最後までだまさなきゃね」/ 罵声に包まれて、君はほほえむ。
  • by Anonymous Coward on 2021年06月29日 16時06分 (#4059889)

    純粋関数型言語に出会うまではそう思っていました

  •  この設問、「簡単」の定義があやふやなので論争の元になって居るが、現実としては表題の通りだと思う。

     これが、二つの言語を習得た者と一つしか習得していない者の比較だと習得している言語のタイプによって状況が変わってくる可能性があるが、一切未経験と他言語経験者であればほぼ間違いなく他言語経験者の方が習得は容易であると言えるだろう。

     ただ、それが「簡単に習得できた」と言えるかはまた別問題というか、人によって感覚が異なるというだけの話だろう。

    --
    しもべは投稿を求める →スッポン放送局がくいつく →バンブラの新作が発売される
    • by Anonymous Coward on 2021年06月29日 15時26分 (#4059851)

      > 一切未経験と他言語経験者であればほぼ間違いなく他言語経験者の方が習得は容易であると言えるだろう。

      それもない。
      毎年、数十人にprolog教えてるのだが、C/Java系の言語経験者と、プログラム経験一切ない人間に、prolog 教えると後者のほうが覚えるのも理解するのも圧倒的に速い。例外もあるが、そういうのはは毎年1人いるかいないかぐらい。
      C/Javaの経験者はコンピュータプログラムはこういうものという先入観にとらわれて、理解がとても遅い。

      親コメント
    • by Anonymous Coward

      「学生が」ってのが肝だね。自称プログラミングできる学生はずぶの素人だから変わらないw

      #まともにプログラミングできるのって学校に一人とかそういうオーダー

      • by Anonymous Coward

        そこまで希少じゃないと思う。
        理系学部だったてのはあるかもしれんけど。
        当方1995年工学部卒業のおっさんだが、その当時でも10人以上はいた。
        今ならもっと多いはず。

  • by Anonymous Coward on 2021年06月29日 15時16分 (#4059842)

    一口にプログラミングといって色々あって、
    1) 一般関数/サブルーチン、条件分岐、ループ、アルゴリズム、配列などの基礎概念は多くの言語で共通している
    2) 再入、再帰、オブジェクト指向、マルチスレッド、自己書き換え、ラムダ式、などなどは言語によって扱いが異なることもある
    3) 文法シュガー的なものや、書式の前提条件や約束ごとはおおいに異っている(一見似ているの違ったりして面倒
    4) 同じ言語でも実装やバージョン違いによって文法や実行効率に違いがある場合もある
    5) ライブラリまわりになると千差万別、むしろ他の言語の知識すら必要になる場合がある
    どこまで必要か、どこを重視するかの問題。
    1)を言語学習の重点だと思う人と、1)は数学であって言語学習ではないと思う人では意見は異なるだろう。

  • > 基本的な概念が異なるプログラミング言語には応用できない
    まさにこれだけど、種類にもよるかな。
    最初に学ぶプログラミング言語は、逐次実行型にしておかないと、いろいろ大変。

    BASIC や COBOL みたいな言語が最初だと、次の言語も逐次実行型なら理解しやすいが、
    考え方が異なる Prolog や SQL (と、ストアドプロシージャ) だと表現を変えただけではうまく組めない。

    また、HTML がプログラミング言語だとする向きもあるが、HTML を理解したところで C が理解できるとは思えない。
    というか、HTML がプログラミング言語だと XML もプログラミング言語になってしまうが、それで良いのだろうか。

    --
    Prolog って、今もどこかで使われているのかな。

  • by nim (10479) on 2021年06月29日 20時15分 (#4060090)

    1つ目が Python、2つ目が Whitespace とか、無理ゲーもいいとこ。

  • 自然言語(?)でも同じ結論になってるよね。
    赤ん坊のうちから英語教えても、日本語がなってないとダメみたいな。
    英語はできてもドイツ語は云々みたいな。

  • by Anonymous Coward on 2021年06月29日 15時09分 (#4059836)

    > 基本的な概念が全く異なる第二言語の学習は、第一言語の学習と同等かそれ以上に難しい可能性が高い。

    学生の頃、C言語しか知らない状態で初めてJavaを触って、二か月くらいはオブジェクト指向的な書き方ができずに手続き型っぽく書いてたのを思い出した。

  • by Anonymous Coward on 2021年06月29日 15時17分 (#4059845)

    何十年も前に最初に勉強したから、他の言語は殆ど簡単だった。
    最初にちゃんと勉強した言語が違う言語だったら、
    そんなに簡単ではなかったと思う。

    #最初に学ぶ言語は重要だと思う。

    • by Ryo.F (3896) on 2021年06月29日 20時32分 (#4060100) 日記

      最初に低レベルな言語から入れば、同系統の高レベル言語は簡単、と言う事ではなかろうか。
      CやC++を学んだあとにアセンブリ言語だったら簡単だと言えるだろうか。

      親コメント
    • by Anonymous Coward

      学生が概念をしっかり学んでいれば

      の前提が大事。たいていの人は最初に学んだ言語で必要とする概念しか学ぼうとしないからね。

  • by Anonymous Coward on 2021年06月29日 15時30分 (#4059856)

    bashのスクリプトとHTMLが書ける場合、2種類の言語ができると言っていい?

  • by Anonymous Coward on 2021年06月29日 15時38分 (#4059864)

    自分はプログラミングが好きで、BASICから始まっていろいろな言語をやってきて、最近はXAMLを使っていますがどうしても好きになれません。あれも一応プログラミング言語と思うのですが、どうも肌に合わなくて全然習得できません。HTMLも苦手なのでマークアップ言語が苦手なのかもしれませんが。

typodupeerror

開いた括弧は必ず閉じる -- あるプログラマー

読み込み中...