どれを学ぶ?プログラミング言語

どれを学ぶ?プログラミング言語

今回の記事はプログラミングをこれから勉強しようかなと思っている人やプログラミングの勉強を始めたけど複雑すぎて挫折しそうという人、プログラミング言語って具体的にどんなのがあるんだろうという疑問を持っている人に向けた記事になります。少し長めの記事になりますが、その分多くの情報を盛り込んだので、最後まで読んでいただければ幸いです。

『別にプロブラミングに興味ないや』という人も折角なので目次からいろんな言語にとんでみてください。普段皆さんが使っているサービスにどのプログラミング言語が使われているかを例として挙げているので、『へぇ』と立ち読み感覚で眺めてもらえるだけでも嬉しいです。記事についてのコメントがあるとモチベーションに繋がるのでよろしくお願いします。

プログラミングとは

プログラミングについて知らない読者に配慮して簡単にプログラミングについて書いておきます。

プログラミングというのはプログラムを書く事です。じゃあプログラムって何?ってなると思うので、プログラムについて説明します。プログラムというのは『コンピュータに対してこういう事をして欲しいな!!』というものを伝えるために書く指示書の事をさします。
この指示書の部分をプログラマーと呼ばれる人たちはコードと呼んでいるわけです。

つまり、プログラミングというのはコンピュータに指示を伝えるためにコードを書く作業のことですね。

プログラミングの勉強の仕方

どのプログラミング言語を学ぶときでも勉強の仕方にはそんなに大差はありません。重要なのは、web上や書籍などで調べたことを自分の手で書くことです。手を動かして実際に動かしてみることでよく間違えるところとか、エラーにどう対処したらいいのかとかを学ぶことができます。『手を動かしてコードをたくさん書いて、サンプルコードを改造した分だけ実力がつくと思うとワクワクしない?』
たくさんコードをかける場所ということで、競技プログラミング(通称:競プロ)を挙げておきます。(別に大会に出なくても過去問がいっぱいあるし)

競技プログラミングに出てみる(出てみると言っても家にネット環境とパソコンがあればオンラインでOK)とか友達とペアプロをしてみるとモチベーションを下げずに勉強できるので試してみてくださいね。競プロの問題は簡単なものだと、『四則演算の結果を計算するプログラムをかく』ぐらいなので、私が書いてるプログラミング勉強系の記事を読んで習得してもらえば、競プロに参加して楽しめるレベルくらいにはなれるはずなので良かったら覗いていってくださいね。

プログラミングの勉強に挫折したら……

プログラミングの勉強に挫折してこの記事を開いてくれた人はプログラミングに興味があるけど難しすぎて行き詰まってる人か、大学とかで課題が出たから勉強してるけどわからないという人が大半だと思います。

興味はあるけど頭がついてかない人については、書籍や学習サイトを熟読したり紙に処理の様子を書いてみたりすると理解ができるかもしれません。上にも述べた通り、手を動かすことは非常に大事なのでプログラムが行っている処理を1行ずつ図におこしたり、コードを模写しまくったりというのも現状を打破できる鍵になるかもしれません。

他にも、『ここの数値を変えると処理がこうなるから、ここはこんな感じの処理をしているのかな』みたいな感じで実験をして理解するのもいいと思います。プログラムを動かして、出力結果から処理の様子を掴むのは大事ですし、コードを書く回数が増えるからお得!

プログラミングに苦手意識を持っている人や面白みが感じられない人は、この下にあるプログラミング言語の種類のところで気になった言語をパラパラみてみると興味が持てるかもしれませんよ。

プログラミング言語の種類

ここではプログラミング言語にどんなものがあるのかを紹介しつつ、その言語で開発されているものの具体例を挙げておきます。おすすめのプログラミング言語から順に紹介していくので、どの言語を勉強しようか迷ったら上に挙げた2つのどちらかを選んでおく事をお勧めします。ただし、『ホームページを作りたい!』とか『ゲームを作りたい!』とか『アプリ開発がしたい!』のようにやりたいことがはっきりしている人は言語の特徴や開発例を見つつ勉強する言語を選択してみてください

Python

現在人気急上昇中の言語です。計算や統計に強いライブラリが豊富なためデータを多く用いるAIなどのディープラーニングや、科学の分野で頻繁に使われています。簡潔なコードが直感的にわかりやすいことから初学者向けの言語と言われています。Pythonで開発されたサービスとして以下のものがあります。

C言語

古くからある言語で、ほとんどのプログラマーが一度くらいは勉強したことがあると思います。この言語の特徴としては、ポインタと呼ばれるものを使用するため、コンピュータのメモリなどの周辺知識も一緒に学べます。新しく出てきた言語はC言語をベースにしているものもあるので、この言語を勉強しておくと他の言語を習得する際に少し楽になります。多くの人が勉強していることからネット上に多くの情報があるため独学初学者でも問題なく勉強できる言語でしょう。ちなみにC言語という名前はB言語がC言語の原型となっているためと言われています。C言語は組み込み系で使用されているイメージがありますね、家電とかOSとか。

C++

C++はC言語に拡張機能を付け加えたものとして派生した言語です。C言語にはなかったオブジェクト指向という考え方に基づいて設計を行える利点があります。ただオブジェクト指向は初学者がつまづきやすい項目なので自信がある人以外は最初にオブジェクト指向言語を学ぶのは覚えることが多くなりすぎるのでお勧めしません。もしどうしてもこの言語を真っ先に習得したいんだという場合にはじっくり時間をかけて理解する勉強が必要になるのでモチベーションで乗り切ってくださいね。現在のプログラミング言語はオブジェクト指向型がほとんどなので、第2プログラミング言語としてC++を勉強するのは良い選択だと思います。

Java

マルチプラットフォームに対応した言語と言われています。異なるOSでも同じように動かすことができるのでOS毎の仕様に悩まされません。ちなみに私が競技プログラミングを始めたばかりの頃はJavaが比較的人気だった印象。コレクションとかラムダ式とか難しいところもあるので、初学者には取っつきにくい言語かもしれませんね。ちなみにTwitterにもJavaは使われていますよ。

C#

名前の通りC言語の派生です。この言語の強みはUnityと組み合わせてゲームを作れることですね。ゲームの中のオブジェクト(アイテムとかプレイヤーとかをひっくるめた総称)をコントロールするためにはC#でソースコードを書いてあげる必要があります。3Dゲームの制作にはUnityを使う方法が最も知名度が高く情報が多いので、3Dゲームを作りたい人はC#とUnityの勉強をするのがいいでしょう。プログラマーだけでなくゲーム開発の求人にも行けるので少し需要が高い言語なのかもしれません。

HTML,CSS

webページを作ることができる言語です。HTMLで文章やタイトル、表なんかを指定して、それをCSSの方でデザインを整えるという感じです。そのためwebページを使って何かを発信したいとかお洒落なブログを運営したいみたいな場合は必須になります。このwebページでもHTMLとCSSは使われています。他のプログラミング言語とは違って、文章をレイアウトするための言語といった側面が強いですね。

PHP

動的なwebページを作ることができる言語です。webデザイナーを目指す人は習得したいところと言った感じの言語で、下記のJavaScriptとHTMLおよびCSSを組み合わせて世界中のwebページのほとんどは作成されています。Yahoo!でもPHPが採用されており、web系の開発ではメジャーな言語です。web開発をしないなら勉強しなくても問題はないですね。知ってるに越したことはないですが。勉強する人は余裕があればSQLについても一緒に勉強しちゃいましょう。

JavaScript

こちらもwebデザイナーに必須の言語という感じになっています。HTMLとCSSを勉強してからの学習を強くお勧めします。HTML, CSS, JavaScriptまでを勉強するとかなりできることが増えます。ページの再読み込みをしなくても動くコンテンツが作れるのでwebページに動きをつけたい場合にはこれを勉強しましょう。

Ruby

日本人が開発した言語で最も有名なものといえばこの言語でまず間違いないです。楽しい言語を目的にしつつも生産性を犠牲にしないというコンセプトで設計されているらしいです。数年前のTwitterでもRuby on Railsが使われていました。他にもクックパッドなど有名どころでも使われています。

Perl

昔はwebアプリケーションといえばPerlで、最強のスクリプト言語として言われていました。現在はそう言う側面もなく、コードの保守がしにくい声もあり徐々に人気が落ちている印象があります。もともとデータベースを活用したwebアプリケーションの開発には『LAMP(Linux + Apache + MySQL + Perl)』と呼ばれる環境で行われていたわけですが、LAMPのPにPHPの”P”(Pythonの”P”を主張する人もいる)も加わっているようです。

swift

アプリ開発に特化した言語です。AppleがObject-Cに取って代わる言語として開発しました。MacのXcodeを使ってアプリケーションの開発を行います。Windowsユーザには優しくないですね。比較的新しい言語なので、勉強する際にはネット上の情報だけでは解決できないことがあるかもしれません。Object-Cを今から勉強するよりは、そのままSwiftを先に勉強した方が後々苦労しないと思います。

Object-C

Swiftが登場するまではアプリ開発といえばこの言語と言われていました。現役だった時代からの愛好家が一定数おり、いまだにSwiftではなくこちらを使っている人も多いです。使い慣れた物を使い続ける感じですね。Swiftが新しい言語なので、Object-Cの方が情報が多い。そのため、現在のところ勉強しやすいのはswiftよりこっちなのかなと。

Go

Googleによって開発された言語で言語構造が単純明快で勉強しやすいです。ただ新しい言語であるため情報が少ないことから、ある程度プログラミングに親しんでから学ぶ方が良いでしょう。コードをかけるプログラマーが少ないためなのか、言語別の平均年収でも上位に来ているようです。実用例としてはブログサービスの『はてな』などの一部にも使われているそうです。

アセンブリ

初学者がいきなり手を出したら即挫折する言語です。低水準言語と呼ばれるものに属していて、機械語に近いコードになっています。レジスタやメモリについての知識やCPUの命令セットの多様化がこの言語の習得の難易度を上げています。コンピュータの仕組みを理解するために勉強するのはありだと思いますが、コンパイラや言語を自作したり、家電などの限られたリソースで組み込みをしたり、既存のソフトウェアを逆コンパイルしたりということをしない限りは勉強する優先度は低いと言えます。

COBOL

今や使われているのは銀行ぐらいであろう言語。かなり古くからあり、事務処理用として開発された背景がある。現在ではあまり学ぶ機会が少ないが言語仕様だけならそこまで大変ではないため興味がある人はコードを読めるように勉強してみてはいかがでしょう。学習の優先度はかなり低いと思いますが、由緒ある化石なので数値を扱うときは慎重に。

FORTRAN

化石です。世界初の高水準言語ですね。現在使われているのはシミュレーション分野と制御系ぐらいじゃないかなと思われます。今からわざわざ勉強するのは一部のマニアと研究者が昔の論文を呼んでその言語で書かれたプログラムが出てきた時ぐらいでしょう。

Scala

オブジェクト指向と関数型言語の両方を併せ持った言語です。Javaの後継的なものとして開発されたようですが、まだまだJavaの方が知名度が高いのが現状です。

Kotlin

この言語はAndroid公式開発言語に追加されていて、Javaに似た言語と言われています。知名度が上がってきたのは最近で、今後の発展が期待できる言語です。しかしこの言語でコードをかけるプログラマーが少ないため、ネット上に情報が少なく、入門言語としてみるとやや不向きであると言えるでしょう。

その他(ネタ枠)

そのほかにも無数のプログラミング言語が存在しますが、ネタ枠として面白い言語仕様やコード自体に特徴を持った言語を紹介しておきます。試しに何かプログラムを書いておきました。ついでにそれぞれの言語の公式ページを貼っておくのでよかったら覗いてみてください。私はこういう変なのが大好きなので流行ればいいなと思います。(飲み会の話のネタにでもしてみてください)

whitespace

ネタ言語の筆頭候補といえばこの言語ですよね。スペースとタブと改行の3文字からなるプログラミング言語で、名前の通り空白文字しかありません。その他の文字はコメントとして扱われるため、C言語っぽく書かれたソースコードが実は空白の部分でコーディングされていた!?みたいな遊びができて面白いです。ただ、難解プログラミング言語に数えられている通り、習得しようと思うと大変そうですね。そのままだとソースコードが見えないと思うので、ソースコードをコピペする要領で選択してみることでコードが書かれていることがわかります。

     
       
       	
     
     	
    					 
        	 	 	 
    	  	
    	 	
    	
     	   	 	 
    	
      
     
     
     
      	
     
     
     
     

whitespace

Shakespeare

シェイクスピアという名前から察しているとは思いますが、『ロミオとジュリエット』、『ハムレット』、『ヴェニスの商人』なんかで有名なあのシェイクスピアが由来です。

名前だけだと思ったら大間違い!!

なんとソースコードで物語ができるという訳のわからない言語デザインを持っています。

Enterで登場人物(変数)を持ってきて特定の単語のみで演算しているのでしょう(多分)。演目(処理)が終わったらExitで退場するのがこだわりを感じますね。

Romeo, a young man with a remarkable patience.
Juliet, a likewise young woman of remarkable grace.
Ophelia, a remarkable woman much in dispute with Hamlet.
Hamlet, the flatterer of Andersen Insulting A/S.


                   Act I: Hamlet's insults and flattery.

                   Scene I: The insulting of Romeo.

[Enter Hamlet and Romeo]

Hamlet:
You lying stupid fatherless big smelly half-witted coward! You are as
stupid as the difference between a handsome rich brave hero and thyself!
Speak your mind!

You are as brave as the sum of your fat little stuffed misused dusty
old rotten codpiece and a beautiful fair warm peaceful sunny summer's
day. You are as healthy as the difference between the sum of the
sweetest reddest rose and my father and yourself! Speak your mind!

You are as cowardly as the sum of yourself and the difference
between a big mighty proud kingdom and a horse. Speak your mind.

Speak your mind!

[Exit Romeo]

Shakespeare

なでしこ

日本語でプログラミングができる言語です。この手の面白いものにしてはライブラリが充実していて、ファンも一定数いるようです。誕生石取得、十二星座取得、和暦変換みたいなユニークなライブラリが標準で使えるので遊んでみてはいかがでしょう。

鯨 = 1
イルカ = 2
亀 = 4
合計 = 鯨 + イルカ + 亀
「全部で{合計}です。」と表示。

なでしこ

まとめ

この記事で伝えたい事を盛り盛り入れ込んだのでざっくりまとめておくと、

  • プログラミングとは、コンピュータに行わせたい処理をコードとして書く事を指す。
  • プログラミングを勉強するときは知識をインプットした後にアウトプットをする(コードを模写したり、改造したりなど)。
  • プログラミングに苦手意識のある人は面白いなと思えることを見つける。
  • プログラミング初学者におすすめする言語はPython, C言語だが、やりたいことが見えているならモチベーションを保つ意味でも、選んだ言語を勉強する方が良い。

最後まで記事を見ていただきありがとうございます。また別の記事でお会いできることを祈っております。

Print Friendly, PDF & Email

programmingカテゴリの最新記事