プログラミング初学者がプログラミング言語と周辺知識の概要を知るための記事

# どのような人向けの記事か
私のような、【駆け出しエンジニアの方やプログラミングに関心のある方、初心者の方】向けにどんなプログラム言語があるのかをざっくりわかるようにゆる〜くまとめたものです。また、備忘録としても投稿しておこうと考えました！

※当方も未経験エンジニアの立場で実務未経験であるため、間違いはあると思いますので適宜ご指摘いただければ幸いです。

# なぜ、この記事を記述するに至ったのか
理由としては、3点あります。
・自分自身が今後フルスタックエンジニアを目指しており、さまざまな言語や技術を習得したいと考えているから
・各言語の特徴を知ることで今後の開発等で最適な言語やライブラリ・コンポーネントへの理解が必須であると考えたから
・自分の武器を増やす上で特徴をまずはざっくり理解したいと考えたから 

# 本編
ここからが本番です！自分自身が記事等で学習したものをざっくばらんに言語化していきます。気になる言語があれば、ご自身でも深く調べてみることで、どんな言語なのか実感できるはずなので是非深掘りして見てくださいね！
### 【注意点】
・言語名の横に（マークアップ言語）と記載されているものは厳密にいうとプログラミング言語ではありません！！
・解説はアルファベット順にします。
・言語の説明中に「フレームワーク」や「ライブラリ」という言葉が出てきます。こちらそれぞれ、ざっくり以下の内容での認識で今のところは問題ないかと思います！
##### 『フレームワーク』
フレームワークとは、「webアプリやシステムを開発する際に必要な機能等があらかじめ用意されていて、状況に応じて自由に組み合わせができる機能の枠組み」のことです。
要するに、先人たちが、「この機能絶対使うし、とりあえずフレームワークとしてみんなが使えるように、共有しておくか〜」というようなものです。使いたい機能を一から実装しなくてよくなるので、フレームワークを使用することで開発をスムーズに行うことができそうですね！
##### 『ライブラリ』
ライブラリとは、「使用頻度の多い機能を、再利用しやすいように保存してまとめているもの」です。フレームワークと少し似ていると思うのですが、違いとしてはライブラリは「部品」であるのに対し、フレームワークは「骨組み」という認識で問題ないと思います。この概念に関しては、プログラミング言語を使用していると少しずつ理解できてくると思うので、実装の際はぜひ意識して見てください。

#  C　現在準備中

##### 【周辺知識】


#  CSS(マークアップ言語)　現在準備中

##### 【周辺知識】


#  Go　現在準備中

##### 【周辺知識】

#  HTML（マークアップ言語)　現在準備中

##### 【周辺知識】

#  Java　現在準備中


##### 【周辺知識】

#  JavaScript　現在準備中


##### 【周辺知識】

#  PHP　現在準備中

##### 【周辺知識】

#  Python　現在準備中

##### 【周辺知識】



#  Ruby
Rubyの特徴は、大きく３つあります！
##### 学習コストが比較的低く、初学者がプログラミングを学ぶにはちょうど良い言語である点
こちらに関しては、ご自身で調べていただければわかると思うのですが、プログラミングの記法が理解しやすい設計となっています！(可読性が高いと言われることもあります。)
コストが低い分、すぐに開発に移れるというメリットもあってか、ベンチャー企業やスタートアップ企業の開発業務に活用されるという例が多いそうです。
当方も、初めて学習したプログラミング言語はRubyで徐々に他の言語を習得していきたいと考えて活動中です。
中には、「せっかく１つの言語を覚えたのに、別の言語も学習するのか...」と思われる方もいると思いますが、基本的な考え方はどの言語も大きく変わらないので、まずはRubyのような初学者の方でも理解しやすい言語から経験して、Java等の言語の記法を少しずつ学ぶというようにすれば、大きな負担にはならないかと思います。
##### 日本語の情報が多く、日本人には学びやすい言語である点
Rubyは、日本人が開発した言語ということもあり、他の言語よりも日本語の文献や情報が多いというのも特徴なので、まず少しでも触れて見たいという方には、適した言語であると思います。
##### Ruby On Rails　と言われるフレームワークを用いて開発を進める点
周辺知識でも記述しますが、Rubyは基本的にRailsと言われるフレームワークを用いて開発をします。

##### 【周辺知識】
Ruby On Rails(通称：Rails)
Rubyの主要フレームワークの一つで、Rubyでの開発のほとんどはこのRailsにあらかじめ用意されている、「ユーザー管理機能」「新規投稿機能」「投稿に対するコメント機能」を使用することになるお思います！
そのような理由から、「Rubyでの開発業務を行う＝Railsの知識も習得する」ことができるという考えかあで大方間違いないかと思いますので、ぜひRailsへの理解を深めましょう！
Rails以外には、「Sinatra」や「Cuba microframework」などがあります。
Sinatraは、学習コストが低く学びやすい反面、複雑な機能の実装には不向きとのことです。
Cuba microframeworkは、Sinatraと同じくシンプルな機能の開発には向いているが、複雑な機能実装には向いていないようです。Cubaの開発者は「フレームワークではない」と主張しているらしく、本人もミニマリストであることから、実行速度が速くなるようにシンプルな設計にしたそうです。

#### 懸念点
#### 実行速度が遅い
Rubyは、インタプリタ方式言語ということもあって、実行速度（プログラミングを機会が処理してその処理の命令を実行するスピードのこと)が遅いと指摘されています。
プログラミング言語には、インタプリタ方式とコンパイル方式の２つの方式があり、インタプリタ方式はプログラムを実行する際に、1行ごとに機械語に翻訳するという特徴があるので、コンパイル方式のプログラムを全て機械語に翻訳してから実行する方式よりも遅くなってしまいます。
#### 個人で記述方法がバラバラ
こちらの問題は、誰が見ても理解しやすい記述をするべきプログラミング言語にとっては、大きなデメリットです。しかし、Railsを使用した開発現場では、Rubocopという記述方法を整えてくれる機能があるので、適宜このような機能も用いて実行することで、デメリットを軽減できるかもしれませんね！
### 参照
Rubyについて気になった方は、是非こちらも確認していただければと思います！

https://docs.ruby-lang.org/ja/

https://railsdoc.com/

# SQL
SQLとは、データベース言語の１つです。ユーザーが入力したデータなどを蓄積させているデータベースというものを操作して、欲しい情報を引き出したり加工したりします。その際の「操作」に使用されるのがSQLという言語です。JavaやCなどのプログラミング言語で開発されたシステムやアプリでも、データベースにアクセスをして情報を活用します。
当方、別記事にて4大文法も説明してますので、よろしければご確認ください。

https://qiita.com/shooooooohify/items/58a4140069b648b57d45
#### 【周辺知識】
SQLを用いる際に、データベース管理システム(DBMS)というプログラムに送るが、DBMSのうち、RDBMS(Relational Database Management System)という企業がそれぞれ開発している、ソフトウェア製品があります。
RDBMSごとに多少、文法が異なる場合がありるので注意が必要になります。


#  Swift　現在準備中

##### 【周辺知識】


#  TypeScript　現在準備中

##### 【周辺知識】





# 最後に
お読みいただきありがとうございました！
こちらの記事には適宜、言語について知ったことや学んだことを追記していきますので、再度読み直し等もしていただければと思います！
今後も、スキルアップと理解度向上のためにQiitaを投稿しようと考えてますので、皆さんでエンジニア業界盛り上げていきましょう！