BLOG

プログラミング学習するにはどの言語?

どの(プログラミング)言語を使うといいのでしょうか?

随分、長いことそういう質問を聞いてきました。

どんなプログラミング言語でもイイですよ。 ・・・と言うことが多かったかなぁ・・・(^_^;)

そうね、イイ加減な回答だったかもしれません。すみません。

質問が「どの言語を使うのがいいか・・」って言うくらいでは、ちょっと曖昧ですからね。

どのプログラミング言語でも、「ちゃんと学べば」・・・イイですよ。

そう言うしかないよね。

もう少しいろいろな状況・条件がついてくれば・・・ちょっとは違う答えもあったかもしれません。

こんにちは。ディーキャリアITエキスパート名古屋丸の内オフィスの志村です。

昔ね、「本物のプログラマはPascalを使わない」という文書を読んだことがあります。

ネットで検索したら出てきました。

わたしはbitという雑誌で読みました・・・昔ね。

検索して出てくるんだから、今でも、この文書を話題にする人・・・いるんだということね(^o^)

ただね、この文書を幾らかでも理解する人は、もう今の時代はかなりの少数派でしょうね(苦笑)

わたしはね、これを読んでちょっと気持ちが分かるくらい・・・年寄りです。

それで「気持ちはちょっと分かる」・・・んですが、構造化プログラミング言語のご先祖さまであるPascal(パスカル)をわたしは学びました。

実際に仕事で使ったのは、Pascalの次くらいに出てきて、構造化プログラミング言語と言われたC言語です。

Pascalを仕事で使ったことはありません。そういう仕事がなかったのでね。

当時、自分で使うパソコン(PC9801F2、OSはMS-DOS)で初めて自分でお金を出して買ったのは、Turbo Pascal(ターボ・パスカル)というコンパイラでした。それまでBASICでプログラムを書いていたので、 Turbo Pascalでプログラムを高速コンパイルして、実行もめちゃくちゃ高速で動いたので、感動しました。

「コンパイラだぁ。スゴイ。速い。トンデモナイ。実行ファイルがコンパクト。小さい。スゴイ」

オタクだったのでね、そういうのでワクワクしてました。

ちなみに Turbo Pascal はコンパイラですが、統合開発環境そのものでした。現代風でしょ? エディタから、コンパイル・実行まですることができるようになっている。

統合開発環境(IDE)のハシリです。

プログラマとして現場で仕事をしていた時に一番使っていたのは FORTRAN77 です。

その次がC言語でした。

構造化プログラミングが仕事で使われるようになった頃のことです。

「本物のプログラマはGOTOを使うことを恐れない」と書いてある(苦笑)

うん、GOTO 使ってました。最初にわたしが学んだプログラミング言語がBASICだったからです。 BASICではGOTO文は大事な制御用の命令でした。ただ、一応、言っておけば、注意して使いました。

GOTOは制御をどこにでも飛ばせますから、深く考えもなしに、その場の条件だけ考えてGOTOするとプログラムの制御はスパゲッティのように絡み合います。

スパゲッティプログラムと言われるプログラムはGOTOによってできた「ダメな」プログラムの典型です。

ちなみに初期のFORTRANはGOTOを使うのが当たり前のプログラミング言語でした。

ある時からGOTOは一切使うな・・・ということを言う人たちが出てきました。

そうね、使わないで済むようにプログラムを書けば良いね。

そうすると、プログラムコードは、ある程度まとまった塊として作ることができて、コピペしても使えるようになりました。

構造化プログラミングが大事なのだと、みんな言うようになって、わたしも確かにそう思います。

C言語プログラムは、そもそもが関数(function)の塊です。

構造化プログラミングが前提のプログラミング言語でした。

C言語の親が Pascal です。ちょっと書き方の制限が多いのですが、構造化プログラミングを勉強するのにPascalは悪くない。でも、仕事で使ったことがありません。

だから当時、プログラミングを学習するならC言語がいいのじゃないかな・・と言っていたと思います。

,ちなみに3つの制御構造だけで書くのが、構造化プログラミングではありません。それも重要な考え方ですが、構造化プログラミングの本質はプログラムを部品(モジュール)として捉えることです。

プログラミングでも何でもそうですが、何かを勉強する時は、まず取っ掛かりやすいところから始めて、徐々にレベルアップするのが良い。

最初にBASICを学んだことをわたしは良かったと思っています。
それで次がFORTRANだった。
それからPascal をやって、C言語です。

今、プログラミングを勉強しようという人に、何を勧めたら良いか・・・ なかなか難しい質問です。

今時のプログラミングはオブジェクト指向です。
構造化プログラミングの先までいく(学ぶ)必要があります。
いきなりオブジェクト指向プログラミングだと言われても・・・難しいよねぇ(苦笑)

まあ、仕方ありません。

だから、プログラミングを学習するなら、取っ掛かりやすいプログラミング言語で、ちゃんと後でも使う価値があるのが良いですね。

C言語から始めて、次のステップで、C++やJavaを学ぶのも良いかなと思います。
GUI環境のWIndowsで動くプログラムを考えたら、Webアプリ用のスクリプト言語がイイのかなとも思います。
そうするとね・・・ディーキャリアITエキスパートが、JavaScriptPHPを勧めるのも一つですよね。今のGUI環境で動かして結果を確かめられる。

小学生がとにかくプログラミングの楽しさを分かるために Scratch(スクラッチ) を使うのもアリだと思います。
でも、これがプログラミングだと思い込むと、実際にプログラムを書く時にギャップに戸惑うかもしれません。ちゃんと手引きする人が必要です。

ということで、今時、初心者から始めて、ちゃんとプログラミングを学習するなら、Ruby(ルビー)とかPython(パイソン) が良さそうです。

Pythonは仕事で使われることも・・・ありそうだ・・・ということもあります。 取っ掛かり易いし、いろいろ、使えるツールやライブラリ、フレームワークみたいのもありそうです。 Python や Ruby を使った仕事もあるようですし・・・
とは言っても、ちょっと気になるのは、実際の仕事で使う時の性能でしょうか。 処理速度を考えたら、ちょっと不利かもしれません。

40年前にわたしがBASICでプログラミングを覚えた時も、処理速度は遅いBASICでしたから、同じことですね。 もっと速い(速く動く)プログラムを作りたいと思って、コンパイラ言語に乗り換えていった。

さて「本物のプログラマは・・・」という文書、一度は読んでみると昔の技術者の気概って何かが分かるかもしれません。

あえて構造化プログラミング言語ではないFORTRANやアセンブラを使うのだ・・・という昔気質の技術者の気持ちは、技術の世界では大事なことを思い出させてくれもします。

人工知能をFORTRANで書くのだ・・・と言う技術者はね・・・う〜ん、そこまで言える人、今はいないでしょうね。

でもね、「弘法、筆を選ばず」 に相通ずるもの・・・感じること・・できるでしょうか?

わたしが最初にそういうことを感じたのは、再帰の仕組みを言語仕様上はもたないFORTRANやBASICで再帰処理する人たち(達人たちです)を目にした時でした。

わたしが若い頃知り合った、ゲーム制作をしていた天才プログラマさんは、C++を使わないけれどC言語でオブジェクト指向するから大丈夫・・・と事もなげに言ってました。

う〜ん、そういうのが「本物の」プログラマたちなんでしょう。

わたしはそこまで行きません。

適度に使いやすい道具に走りました(苦笑)

構造化プログラミングしなくちゃいけないから・・・C言語が良かった。
今、オブジェクト指向でイベント駆動のプログラムを書くなら Java かな。 C++でも良いです。
今どきのスクリプト言語はオブジェクト指向の言語ですから、JavaScriptでも、RubyやPythonでも良いと思っています。

楽だもの(笑)

天才ではないので、わたしは見合った道具を使います。

「わたし今、Windowsパソコン使っています。プログラミングを学ぶなら・・どの言語がいいでしょうか?」 と、聞かれたら、

そうね、手軽さを考えて・・・JavaScriptか、Pythonで良いかな。Rubyでも良いけど。
Javaはちょっと最初は難しいかもしれないね。
JavaScriptやPythonは40年前のBASICみたいなもんです。

最初はそこから入って、実際に仕事としてプログラムを書くようになったら、 C++、Java、もしかしてWindowsのプログラムを書かなくちゃいけないなら C# を学んだらいい。

構造化プログラミングって何よ・・・オブジェクト指向プログラミングというのは?・・・というのを順番に覚えたら、良いでしょうね。

ディーキャリアITエキスパートでは、Webアプリ開発から入りますから、大体はそういう順番でプログラミングを学びます。

少しだけ、その本質については手引する人が必要かもしれませんが。

ディーキャリアITエキスパート名古屋丸の内オフィスに来てくれたら、そういうこともお話しましょうね(^_-)-☆


ディーキャリアITエキスパート名古屋丸の内オフィス 
 ・電話052-218-4877
 ・メール it-nagoyamarunouchi@dd-career.com 
 ・所在地:〒460-0002
      愛知県名古屋市中区丸の内2-17-22丸の内桜通ビル2階
 ・HP:https://dd-career.com 


ITエキスパート名古屋丸の内のブログ一覧
  1. ペースやサイクルが鍵

  2. プログラミング学習 “以前”

オフィス情報

ITエキスパート名古屋丸の内オフィス

名古屋市営地下鉄 桜通線/鶴舞線「丸の内駅」3番出口すぐ
052-218-4877