これまでに学んだプログラミング言語

プログラミング

こんにちは、プログラミング歴4年のぴのです。

プログラミング歴4年と言いましたが、実は初めてプログラミング言語を触ったのは9年前、つまり12歳のときなんですよね。父親がパソコン関係の仕事をしていたためか、プログラミング入門の本を買い与えられてやっていました。まあ当時はポインタがわからんすぎてやめちゃったんですけどね

再びプログラミングを始めたのは高2のときで、当時やっていたゲームのバランスに不満があって、それなら自分で面白いゲームを作ってやろうと思ったのがきっかけでした。

それから時が経ち今に至るわけですが、今回は管理人が今まで学んできた言語について雑談を交えながら振り返っていきたいと思います。

雑談

C言語 / C++

管理人が12歳の時に初めて触ったプログラミング言語が「C言語」でした。おそらく同年代でプログラミングを学んだことがある方の多くはC言語を最初の言語として学んだことだと思います(最近はそうでもない)。C++はC言語の拡張版です。

先述のとおりよくプログラミング初学者が最初に学ぶ言語としてとりあげられてきて実際に管理人もその一人だったのですが、いろいろな言語を学んできた今、どう考えても初学者には向いてない言語だと思います。

確かにプログラミング言語の中でも基本の言語ではあるのですが、基本というのは簡単という意味ではないんですよね。例えばC言語の中で初心者キラーと(管理人に)呼ばれる「ポインタ」という概念とかがそれですね。情報系の人は避けては通れない概念ですが、一般用途では気にしなくていい概念です。それをプログラミング初学者が学ぶ必要があるのか?と管理人は思います(ただしプログラミングガチ勢と情報系学生を除く)。

また、歴史がある分「負の遺産」と呼ばれるものが多く存在するのも欠点だと思います。よく見るものではscanf関数とかですかね。入門書とかだとよく見る入力を受け取る関数ですが、簡単にメモリ破壊を起こせる危険な関数でもあります。互換性を残すために残っているのだと思いますが、C言語にはこういったものが結構あります。

あとこれは主観ですが、関数名に似たようなものが多く、分かりにくいものが多いと感じます。管理人がハマった例だと「fgetc」「fgetchar」「getc」「gets」とかの類ですかね。fってfileの略じゃないんか?と思いますが、getcでもファイル読み込みできます。cってcharの略じゃないんか?と思いますが、別の関数です。関数名付けた人は猛省してください。

管理人の言葉で言うと「何でもできるけど不便な言語」です。

C#

管理人がメインで使っているプログラミング言語です。Unityを使うために学びましたが、気に入ったので他の用途でも使っています。ちなみにC#とはC++++の意味です。

先述の通り、Unityでゲームを制作するなら必須の言語です。Unity抜きにしても便利な言語です。C++と大きく違うところは「ポインタ」を意識せずにプログラムが書けるところでしょうか。全体的な習得難易度は少し高め(らしい)ので普通の初学者向けかは微妙ですが、ひとつ上に進みたい初学者にはおすすめしたい言語だと個人的に思っています。

これも主観ですが、関数名がわかりやすいのとアッパーキャメル(MyFunctionのように大文字で繋げる)なのが好みです。管理人はアンダースコア(_)のキーを小指で押せないので嫌いです。

HTML/CSS/JavaScript

Webサイトを作るのに主に使われる言語で、大体セットになっています。HTMLで基本の構造を作り、CSSで見た目を装飾・調整し、JavaScriptで動かします。管理人が2番目に学んだ言語です。

このホームページ開設を機会に、今現在進行形で学びなおしている最中です。どうやら最初に学んだときからバージョンアップしているようで、異なる部分が結構あります。これから学ぶ方はJavaScript(ES6)という最新バージョンを学びましょう。

替えが効くようなものでもないので、Web系の何某を作るなら必要な言語です。ただし各種便利なライブラリや拡張があるので存分に使って効率よく使うといいと思います。

管理人はHTMLを書くのが下手くそなので気が付くとインデントの数がたいへんなことになっています。これから勉強しながら慣れていくしかないな。

PHP

JavaScriptがクライアントサイドで動くのに対し、PHPはサーバー側で動く言語です。データベースとの連携などに使われます。ちなみにWordPressはPHPで動いています。

特筆すべき点はHTMLの中に埋め込める部分でしょうか。サーバー側で処理を行ってからHTMLに出力して表示するみたいなことができるわけです。

この前作ったTweetBotもPHPでできています。あれは別にHTMLに埋め込んでいるわけでもなく他の言語で作ることもできますが、WordPressの(PHPで書かれた)関数を使うためにPHPを選んだだけです。たぶん管理人は、もうTweetBot以外でPHPを触る機会がしばらくなさそうな気がしています。

Python

人気が高く、C言語に変わって初学者にも人気な言語です。シンプルに記述することができ、またライブラリが充実しているので画像処理などの用途でも使われます。

ただ、C#に慣れてしまった管理人からすると、{}や;を使わずにインデントや改行で処理の単位を分けるpythonの書き方は、風呂に栓をせずにお湯を張っているようななんとも言い難い感情になります。初学者には関係ないですが。

そういうわけで学んだはいいものの機械学習やら画像処理でもするのでない限りは管理人は使わないと思います。

Ruby

日本発で有名な言語です。Webアプリのシステムなんかに使われるらしい。

python同様、インデントや改行で処理単位が分かれているので、管理人はちょっと慣れませんでした。そうはいっても割とシンプルに書けるので最初の言語としてはアリだと思います。

Ruby on Railsというウェブアプリ開発用のフレームワークがあるので、ウェブアプリを開発する方は選択肢の一つになると思います。

Java

ひととおり学びましたが、C#の前身の一つということで共通点が多い反面、C#より優れている部分が管理人には分かりませんでした。たぶん使わないです。

あと、JavaとJavaScriptは別物です。

Go言語

Googleが開発した新しいタイプの言語です。入門サイトに載っていたのでついでに学びました。文法がシンプルで、実行速度も速いらしいです。

なんとなくですが、C言語を現代版にしたらこんな感じになりそう、という感じがしました。使っていない変数などもコンパイル段階でエラーになるということで、デバッグがやりやすいのかなーとも思いました。

おわりに

PHP以下に関しては管理人は にわか なので思ったより大したことが書けなかったのが反省点です。これからしばらくはC#とHTML/CSS/JavaScriptをメインに使っていく所存です。C++は…やらないといけないんだろうなぁ…

どの言語にも言えることですが、何かやりたいことがあるから勉強する、というのでなければ身につかないと思います。管理人はゲームを作るためにC#を勉強し、ホームページを作るためにHTML/CSS/JavaScriptを学びました。そういうものを見つけることが、勉強以前に大事だと思います。モチベが全然違います。

というわけで管理人はC#をおススメします。Unityでゲームを作ろう!

コメント

タイトルとURLをコピーしました