月曜日, 2月 6, 2023
ホーム プログラミング

プログラミング

2022年時点で主要なプログラミング言語を解説します。どのプログラミング言語を学ぶべきかがわかるようにしています。プログラミングの学習の参考にしてください。 インタープリタ型プログラミング言語 インタープリタ型プログラミング言語とは、実行の度にプログラムコードを解釈して実行されるプログラミング言語です。スクリプト言語とされる場合やスクリプト言語の事もあります。それ以外のプログラミング言語は、プログラムコードの作成後にコンピュータが理解する形に事前にコンパイルやビルドをしないと実行できません。 インタープリタ型言語は、ソースコードの記入で即プログラミングに反映し、実行出来るので、修正の度にコンパイルやビルドが必要な言語よりも利用が簡単です。一方で実行速度はコンパイルやビルドが必要なプログラミング言語の方が圧倒的に早いです。 Python 豊富なライブラリにより、小さなプログラムから、機械学習まで様々な分野で使われています。ライブラリが豊富というのは、そのプログラミング言語で実現できる機能が既に多数用意されており、ほとんどの機能はそのライブラリを使う事で簡単に実現できるという事です。 例えば画像からの文字認識を1からするには、様々な機能をすべて自分で開発する必要がありますが、文字認識がすぐに出来るライブラリを使えば最小限の設定で文字認識が可能になるという事です。 JavaScript Webブラウザ、各種アプリケーションなど様々なところで利用されているスクリプト言語。ライブラリも豊富で上位拡張したTypeScriptも含めると、様々な環境で利用や応用が出来るプログラミング言語です。 その他 その他に含めるのが適切かは微妙だと思われますが、Ruby、Perl、PHPなどもよく使われています。 アプリケーション作成に使われているプログラミング言語 インタープリタ型以外で、アプリケーション作成などによく利用されているプログラミング言語を紹介します。 C# 主にマイクロソフトが開発しており、CやC++に近いが、Javaに近い部分もあります。Visual Studioでよく使用されており、Xamarinを利用する事でWindowsだけでなく、Android、iOS含めて様々なプラットフォーム向けでも利用可能。 https://docs.microsoft.com/ja-jp/dotnet/csharp/ Kotlin Javaから発展した言語で、GoogleはAndroidの推奨アプリケーション開発言語に指定しています。 https://kotlinlang.org/ Swift Appleが中心に開発しているObjective-Cから発展した言語です。iOS、macOSなどAppleのプラットフォーム向けのアプリケーション開発だけでなくWindowsでも利用出来ます。 https://www.swift.org Java Javaはオラクルが中心に開発しており、C++の影響を受けている言語です。特にサーバー側のWebアプリケーションで利用されていることが多いです。 https://www.oracle.com/java/ Dart Googleが中心に開発している言語で、JavaScriptを発展させたもので、CやJavaなどの影響もうけています。同じくGoogleが提供しているFlutterはDart言語を採用しており、Webアプリだけで無く、iOS、Android、macOS、Windowsなどのアプリケーションの開発も可能。 https://dart.dev システムプログラミング システムプログラミングとは、簡単に言えばOSのようなハードウェアに近いプログラミングのことで、いわゆる低いレイヤーでのソフトウェアの開発に使われるプログラミング言語です。 コンピュータ自体、CPUやハードウェアに関する知識も必要で、比較的習得のハードルは高いですが、ある程度でも学んでおくとプログラミングの技術が向上し、より深いレベルの開発も可能になります。初めて学ぶプログラミング言語としてはハードルが高いですが、ここから入っても問題ありません。一般的にはある程度コンピュータの知識があり、プログラミング自体もある程度わかっている人が、学習すべき言語です。 C/C++ C言語自体は1972年に開発されました。それから50年経ってもシステムプログラミング言語として使われて続けています。C++はC言語から拡張した言語で、オブジェクト指向などのプログラミングで重要な機能があります。どちらも登場からかなり時間が経っている言語ですが、GPGPU、機械学習で使われているNVIDIAのCUDAでもC言語と一部C++を拡張したCUDA Cが使われており、決して古いプログラミング言語ではありません。 C++の学習にC言語自体を理解しておく必要はありませんが、完全な入門ならある程度C言語を学習した後に、C++をより深く学習するということもできます。 Rust RustはC言語やC++に換わるシステムプログラミング言語として近年人気です。C言語やC++ではバグ等でメモリに関するエラーが発生する可能性があるが、Rust自体にメモリ安全性を確保する仕組みが組み込まれています。そのため、より安全なソフトの開発が可能になっています。近年ではFirefox、Android等でも利用されています。C言語やC++に近い文法で、C言語やC++を知る方が学習しやすいです。 https://www.rust-lang.org
2022年現在で主要なプログラミング開発環境や言語を紹介します。 Flutter Googleが中心になって開発しているアプリケーションフレームワーク。Dart言語を利用してクロスプラットフォームアプリケーションが開発できる。 Dartなどを使用。Web、Windows、Android、iOS、macOS等向け https://flutter.dev Swift Appleが中心になって開発しているプログラミング言語。Appleの各環境、Windows、Android向けにも利用可能。 https://swift.org .NET マイクロソフトが中心になって開発しているフレームワーク。 C#などを使用。Web、iOS、Android、Windows、macOS等向け https://dotnet.microsoft.com/en-us/ Xamarin ここではマイクロソフトが提供するフレームワークの事。C#などを使用。Web、iOS、Andriod、macOS、Windows向け https://dotnet.microsoft.com/en-us/apps/xamarin React Metaが中心に開発しているJavaScriptライブラリ。 JavaScriptを使用。 https://reactjs.org React Native Metaが中心に開発しているAndroid、iOS、UWPのネイティブ開発できるReactのアプリケーションフレームワーク。 JavaScriptを使用。Android、iOS、UWP向け https://reactnative.dev Python 小さな物から、機械学習まで様々な環境で利用されているインタープリタ型プログラミング言語。 https://www.python.org Ionic Angular、React、Vueなどと併用して使用するフレームワーク。 JavaScriptを使用。Android、iOS、Web等向け。 https://ionicframework.com Java 各種Webアプリケーション、Androidなどで使われている言語。 https://www.oracle.com/java/ Kotlin Javaを改良した言語で、Androidの推奨言語。 https://kotlinlang.org CUDA NVIDIAのGPUを使ったGPGPUのプラットフォーム。 C言語やC++を拡張している。 https://developer.nvidia.com/cuda-zone Rails Ruby on RailsやRoRなどをも呼ばれているRuby向けのWebアプリケーションフレームワーク。 Rubyなどを使用。Web向け https://rubyonrails.org Rust C言語などに変わるシステムプログラミング言語。 https://www.rust-lang.org PHP Webアプリケーションで使われている。 https://www.php.net/ HTML, CSS Webサイトなどで使われている。
プログラミングは世の中の様々な事と同様に奥が深いです。初めた直後に様々な事を学ぶと、まだまだ始めたばかりだが、ほとんどのことをある程度学習すると、プログラミングが出来ると勘違いしがちです。しかし、さらに学習をし続けると、より高度なプログラミングの課題などに行き詰まるようなこともあるでしょう。自分より出来る人に出会うと、自分が全然わかっていなかったことに気づくこともあるかもしれません。 プログラミングが出来ると勘違いするよくあるケースを紹介します。 プログラミング車の運転やったことない人プログラミングをした事無いから何も知らない運転したことないから何も知らない知識だけある本などを読んである程度知っているが、やったことはない車のことを知っているが、運転はしたことないお試しでやったことがある学習環境等でやったことがあるゲームなどで車を動かしたことがある入門段階(自分がかなり出来るようになったと勘違いしがちな段階)入門書を一通りやった教習所で運転したことがある自分でできるようになる(やっとなんとか出来るようになった段階)一から自分でプログラミングできるようになる免許を取って公共の道路を走れるようになる一通り何とか出来るようになる(知らない人からは出来る人と勘違いされる段階)時間はかかるし、調べながらだが一通りのことは出来るようになるどこでも問題なく行けるようになる仕事で評価されるくらい出来る(出来ると人に言っても恥ずかしくない段階)仕事である程度信頼されるくらい出来るようになる関連知識も豊富タクシーやバスの運転手としても問題ないくらいに運転はスムーズに出来る運転だけでなく、車の構造、仕組みなども良く理解出来ている人に頼られる、教えられるくらいになる(自分がまだまだなことを実感できるようになる段階)他の人がなかなか難しい事も、実現できるようになるプロのレーシングドライバークラスの技術、知識がある業界でもトップクラスになる(一部のことはかなり詳しいが、理解しているのは一部な事がよくわかる段階)業界トップクラスの人プロのレーシングドライバーの中でもトップクラスの人すべてを完璧に理解する(そんな人はいない)すべてを完璧に出来るプログラマーは存在しないそんな人はいない プログラミングに限らず、すべての物事は奥が深く、入門した段階である程度出来るようになるとすべてを理解したとも思いがちです。 しかし、自分が何も知らないと奥が深いこと自体を理解していないと、自分が知っていることは全体の1割でも、それがほとんどすべてと勘違いしてしまいます。プログラミングは特にその傾向があり、一見簡単にできることでも、実はより効率的に出来る事など方法はいくつもあり、効率に出来るという事自体を入門段階では知らない事も多いようです。 その結果、何も知らないのに出来ると勘違いしがちなようです。
人間が意思疎通に使う言語のことを自然言語と言います。人間が生活していく中で進化していった言語なので自然な言語とされているようです。一方でプログラミング言語とは何でしょうか。 自然言語が人間同士の言語だとすると、プログラミング言語は人間がコンピュータと意思疎通するための言語です。 最近は人間が使う自然言語を話しかけると希望通りの事をしてくれるアシスタント機能もありますが、これを実現するにはプログラミング言語で人間が使う言語を理解するようにした人がいるからです。将来は人間の言語で今以上に様々な事が出来るようになるでしょうが、コンピュータ自体を操作したい場合には何らかの形でプログラミング言語が必要です。 実際、ノーコードというプログラミング言語自体を使わずに、ある程度のことが出来る環境が充実しています。そのような状況が主流になったとしても、コンピュータの基本的な部分から操作したい場合などにはプログラミング言語でコンピュータに命令すること自体は必須です。 自然言語は利用する単語や文法が異なる物の、いずれかの言語に似ていることがほとんどです。英語の場合、大きく分けるとイギリス英語、アメリカ英語があり、単語の語源はラテン語から来ていたり、使用する単語は西洋の言語でほとんど共通化していたりします。日本語の場合も、中国語の漢字を利用していたりなど、各言語間で共通している部分は多いです。 プログラミング言語はいくつか種類がありますが、自然言語と同様にどの言語も似たような構成になっています。
プログラミング関係の書籍は大量に販売されていますが、その言語を学びたい方に今現在適した書籍というのは限られます。 プログラミング言語の書籍は大別すると プログラミング自体を知らない人向けプログラミングは知っていて、新しい言語を学びたい人向けその言語の基本はしているが、より深く知りたい人向け特定の何かを目的とした物 に分けられます。 例えば プログラミングが初めての人向けに、プログラミングとはこのような物ですよと紹介する書籍は、プログラミングの基礎から、そのプログラミングを出来るようにする説明、そのプログラミングの基礎を説明しています。 プログラミングは知っていて、新しい言語を学びたい人向けの書籍は、その言語の文法や主要な機能を解説していて、プログラミングの基礎についての説明はほとんどありません。 より深く知りたい人向けの書籍は、特定のプログラミング言語の応用の使い方などを深く解説した物で、このあたりの書籍はかなり数が限られます。 特定の何かを目的とした物では、機械学習に関する説明をした書籍で、特定のプログラミング言語で機械学習する方法や、ゲームのプログラミング方法などを解説した物などがあります。どの場合も特定の言語や開発環境での開発方法を解説した物が多いです。 どの場合も、本人の目的に応じて選択する必要があり、自分の目的に合った物なのかは目次、内容をしっかりと確認しましょう。