Infoma!!
情報系大学生が最強のオサレプログラマを目指す
プログラミング

【初心者向け】プログラミング言語とフレームワークを独断と偏見で解説【前編】

【初心者向け】プログラミング言語とフレームワークを独断と偏見で解説【前編】

こんにちは、mochi(@osaremochi)です!

日頃twitterやQiitaを見ていると分からない言語やフレームワークがよく出てきますよね。C++ってなんやねんみたいな。

分からなかった時に個別に調べてもいいんですが、逐一は効率が悪すぎて嫌なんですよね(‘Д’)

というわけで、今回は最近流行りのプログラミング言語・フレームワークをまとめていこうと思います!(´ー`)

自分が好きそうな言語や、これから勉強する言語選びの一助になれば幸いです(*’ω’*)

それでは行きましょう!!

C(シー)

イメージ画像

たぶん大体の人が知っているプログラミング言語。太古の昔から機械あるところにC言語アリな感じ。1972年発表のご年配。

組み込み式からソフトウェア作成まで何でもできる素晴らしい子です。

かなりアセンブリに近い雰囲気を持っていますが、この言語をマスターすればほかの言語の学習もはかどること間違いなし。

所属としては、昔は高級言語でしたが最近は低級言語に見られることも多いようです。

厳密には高級言語の部類ですかね(*’ω’*)高級アセンブラと呼ばれたりもするみたいですよ(´◉◞౪◟◉)

手続き型というパラダイム(考え方)やポインタ演算という操作に慣れない人もいると思うので、初学者には難易度高めです。

オブジェクト指向が無かったり、クラスが無かったりと最近の流行りを備えていないので、できることは少なめ。

ただ、機能が少ない分ハイスピードで動きます。

多機能な言語を使いたいなら発展版のC++を考えましょう(´ー`)

 

C++(シープラスプラス)

1983年に開発されたC言語の拡張版です。より汎用的な言語になりました。

Cとは違ってクラスと継承、例外処理などを備えていて、ソフトウェア開発にはもってこい。

オブジェクト指向も備えちゃいました。なんでも吸収するな君は…

発表からアップデートを重ねているので、めちゃくちゃ多くの機能を持っています。さらにプログラムの書き方も千差万別。それはだめだろ

その多様性によってクソコードが無数に生まれています。スパゲッティコード最高ですね。

もちろん機能的なソフトウェア構築もできるので、ひたすら勉強です(*’ω’*)

様々な言語に多大な影響を与えただけでなく、近年のプログラミングパラダイムの根幹にもなっているので、余力があればぜひ勉強してみてください。

C++自体に根強い人気とニーズがあるので、オススメ言語のひとつです。

補足ですが、私の大学では大学院入試でC言語が使われます。そういった学問的な意味でも勉強するのはアリですね(´ー`)

 

Objective-C(オブジェクティブ シー)

イメージ画像

mac OS、iOSの専用言語となったC言語の拡張版。

Cの発展版というよりはC言語+オブジェクト指向のマクロを取り入れているというような感じ(´ー`)

いまではその座をSwiftに奪われているので、レガシーコードを読むくらいの用途かな…?

C系言語は魔改造のにおいがプンプンしていいですね。

 

C#(シー シャープ)

まさかのC++と一切の互換性なし(‘Д’)

マイクロソフトが開発した汎用プログラミング言語です。

Cがオブジェクト指向も取り入れるという形だったのに対して、C#は全面的にオブジェクト指向を採用。

強い静的型付けと、マルチパラダイムを有します。OSの開発こそできませんが、ソフトウェアの開発のしやすさがC++より向上していますね(´ー`)

また、C++とは違ってデスクトップアプリやWebアプリケーションを作成するのに向いています。

ゲームエンジンであるUnityで主に使われる言語なので、ゲーム制作の仕事などを考えているときはC#を選びましょう(´◉◞౪◟◉)

 

COBOL(コボル)

イメージ画像

1959年誕生のご長寿言語。自然言語に近い形で記述できるように設計されています。

ビジネスによく用いられる言語で、シンプルで習得しやすい、堅牢性に優れている、などなど。

汎用COBOLとOPEN COBOLという二つの種類があります。

最近では古い言語ということもあってか技術者が減少しているようで、そのぶん希少価値で技術者の年収が高めに…(´ー`)

個人的な考えですが、汎用的な「プログラミング」を学ぶには不向きな言語なので、今から勉強するのはそこまで得策ではないかもしれませんね。

 

D(ディー)

もはや何も言うまい。詳しくはこちらへ。

 

Elixir(エリクサー)

イメージ画像

並行処理や関数型の特徴を持つ話題の言語。名前がドラクエっぽくていいです(*’ω’*)

  • C10K問題(クライアントが1万人も来ると無理)
  • ムーアの法則が限界に近付いてきたことによるCPU単体性能の陰り
  • リアルタイム接続するアプリケーションの増加

といった問題を解決できる言語として注目されています。

関数型言語で、一つのプロセスがほかのプロセスとメモリ領域を共有することがないので、同時並行的に処理を行うことができます。

なんと一つのサーバーで200万ものプロセスを処理できるんだとか…次にくる大物Web言語といわれるのも納得(´ー`)

Erlangという言語で開発されておりErlangの仮想環境で動きます。

しかもRuby風味を醸し出しているのでとっつきやすい。今後のために勉強するのはアリですね(*’ω’*)

今後台頭する言語の一つだと思います。

より詳しくはこちらの記事が詳しいのでどうぞ…

 

Erlang(アーラン)

数学者のアグナー・アーランにちなんで名付けられたとか。Elixirの親になった言語です。

関数型言語で、変数の代入は一回きり(束縛)、並行処理ができる、などなど、Elixir感が既にありますね。

汎用的な言語で様々な応用がありますが、プロセスを捌くのがうまいという理由で大規模通信システムなどでの採用が多いです(´ー`)

 

Phoenix(フェニックス)

Elixir上で動くフレームワークです。

Ruby風のフレームワークで、同時並行処理をサクサク実装できるとか…

興味がある方はこちらへ…(´ー`)

 

Fortran(フォートラン)

イメージ画像

fortniteのパチモンみたいな名前ですが1957年リリースの老舗言語です。

なんと世界で最初の高級言語。数値計算ライブラリが非常に充実しており、今でも大学の工学部で教えているところは多いです。

古い言語ながら近年の改定でオブジェクト指向や並列性という概念も備えました。

最近のプログラムだと、PythonからFortranを呼んで高速に数値計算をさせたり、などといった使い方もあるようです。

勉強は必要になったらって感じですかね…(´◉◞౪◟◉)

スーパーコンピュータの実装などでは使われることもありますので、電気系なら選択肢に入ってくるかな…(*’ω’*)

 

Go(ゴー)

プログラミング風景

ポケ●●Go。

C言語ライクなプログラミング言語です。2009年にGoogleが発表したばかりなので、かなり若い言語ですね(*’ω’*)

シンプルかつ効率的なコーディングができることをウリにしています(´ー`)

ですが、2018年版プログラミング言語人気ランキング19位ですので、なかなかの勢いでシェアを獲得してきたことが分かりますね。

若干Kotlinと被っているような…(‘Д’)

LinuxやMac, Androidで動作するので、応用範囲は広いですね。また、最近はやりの並列処理を簡潔に記述できます。

「プログラミングは楽しくあるべき」を理念に掲げているの、最高だと思います(´◉◞౪◟◉)

 

Haskell(ハスケル)

イメージ画像

純粋関数型言語です。純粋なの最高。数学者であり論理学者であるハスケル・カリーにちなんで名付けられました。

この言語の珍しいところは圏論などの数学的アイデアを取り入れているところ。圏論は高度に数学的な概念なので、ここでは割愛します…(‘Д’)

こちらの記事が分かりやすいのでどうぞ…(´ー`)

また、ルールとして変数はすべて値の変更ができないません。

代わりに、変数に値を入れるときは代入ではなく束縛という言葉を使います。全部constってことですね。関数型言語で見られる仕様です。

関数型言語の長所や、ほかの言語にない特徴的な考え方を取り入れることで、他の言語では複雑になりがちな記述も簡潔に書くことができます。

詳しくはこちらの記事が素晴らしいのでぜひ…(´ー`)

 

HTML(エイチティーエムエル)

イメージ画像

Hyper Text Markup Languageの頭文字ですね。その名のとおり、文章の各所にしるしを付けることで、文章に適切な構造を持たせることができる文書形式です。

HTMLをつかって適切に文書構造を定義してあげることで、検索エンジンがWebページを正しく理解できるようになります。

Webページ制作には確実に必須の言語ですね。

現在ではHTML単体で運用することはほとんどなく、CSSやJavaScriptと同時に運用します。場合によってはPHPやRuby(ruby on rails)も使用します。

 

CSS(シーエスエス)

Cascading Style Sheetsの略です。HTMLを装飾するために使用します!

HTMLはあくまで文章の構造を定義するために使用されるべきなので、飾りつけはこっちをつかおう!って感じですね。

昔のサイトなんかだとこれが守られてないことがしばしば…(´ー`)

ただの装飾だけでなくアニメーションを作成することも可能です。複雑なアニメーションはJavaScriptのほうが得意なのですが、なかにはこんな超絶技巧を持つ方もいらっしゃいます…CSSの可能性は無限大(*’ω’*)

 

Sass(サス)

Syntactically Awesome Stylesheetsの略です。構造的に最高!なスタイルシートって感じの訳ですかね…細かいことは気にしないでおきましょう(*’ω’*)

CSSの拡張言語で、CSSに対して入れ子構造や変数、関数を使えるようにします。CSSをもとのまま使えるのがうれしいですね。これにより記述量を格段に減らせます。

ちなみに最初はsass記法というものが使われていたんですが、その書き方が分かりにくかったため、現在はscss記法というものが主流になっています。ヤヤコシイワァ…

Sassを使用したCSSファイルは可読性や保守性が非常に高まるので、チームでの開発はもちろん、個人作成のときにも自分でメンテナンスを行いやすくなります。

ノーマルのCSSは記述量が増えるとエレガントじゃなくなってしまうので、Sassで記述量を減らせるのはありがたいですね。

Webページ作成での学習優先度は、必須とは言えませんが覚えておくと効率アップになって非常によいですね(´ー`)

 

Bootstrap(ブートストラップ)

イメージ画像

もっとも有名なHTML,CSS,JavaScriptフレームワークです(・ω・)全部入ってますw

Twitter社の人がメインで開発してたみたいですが、現在はほとんど退社しているみたいですね。もともとの名前は「Twitter Bootstrap」でした(´ー`)

クラスを指定するだけで様々な機能を利用できるなど、開発効率を非常に上げることができます。

WordPress用のBootstrapもあったりするので、デザインを気にするのであればお世話になることは多いのではないでしょうか(*’ω’*)

 

XML(エックスエムエル)

Extensible Markup Languageの略です(´ー`)拡張可能、って魔法の言葉ですね。

HTMLとは違って、データを記述するための言語になります。似て非なる言語って感じですね。

XMLとHTMLを連携させることで、データの記述とサイトの構造化を同時に行ったりもできますね。

Googleの検索エンジンに、サイトの地図であるサイトマップをXMLで記述して渡したりします。

この言語をメインで使うのではなくて、HTMLなどと組み合わせて使っていく感じですね(*’ω’*)

 

XHTML(エックスエイチティーエムエル)

Extensible Hyper Text Markup Languageの略です。HTMLとXMLを合体させた感じですかね(*’ω’*)

いまでは開発が中止された過去の言語になっています。

HTML5が正式規格になっているため、これから勉強する機会はない気がしますね(´ー`)

なので、XHTMLについての教材を買っちゃわないように気を付けてください$$

 

プログラミング言語はめちゃくちゃ多い

いかがでしたでしょうか!

ここまでに18の言語・フレームワークについて見てきました。なかなかの種類がありますが、まだほんの一部です(´◉◞౪◟◉)

時流をしっかりつかんで常に先進的なエンジニアを目指しましょう(´ー`)

次の中編はこちらから!!

【初心者向け】プログラミング言語とフレームワークを独断と偏見で解説【中編】
【初心者向け】プログラミング言語とフレームワークを独断と偏見で解説【中編】こんにちは、mochi(@osaremochi)です! 今回も2018年現在世の中に普及しているプログラミング言語やフレームワーク...
Blog Hacks

現在”ガチで稼ぎたい人しか受けてはいけないブログ講座 Blog Hacks”を受講中です!ブログの作り方や戦略だけでなく、Webマーケティングライティング心理学まで幅広い知識と、細かな記事添削、アドバイスが受けられます(´ー`)

私がたったの1記事で約5万円の収益をあげためちゃくちゃ凄い講座です!!興味のある方はレビュー記事を書いてますので、こちらの体験記事か、公式ページをどうぞ!!

【初心者が20万越え!?】大学生でもBlog Hacksで稼げる!【必見】

Blog Hacks公式ページ