LogoMark.png

ProgrammingLanguage のバックアップソース(No.1)

#author("2021-06-07T11:13:23+09:00;2019-07-05T20:51:19+09:00","default:inoue.ko","inoue.ko")
*プログラミング言語
プログラムを記述するための形式言語
~

コンピュータと人工知能・ロボットは、私たちの社会、私たちの仕事のあり方を大きく変えつつあります。これらに関して全体を俯瞰する知識が必要です。

重要なのは、コーディングのスキルそのものではなく、コーディングの体験を通して、プログラミング的思考力を身につけること、また、他者(機械も他者です)とのコミュニケーション能力を身につけることです。

~




***プログラミング言語の動向
-[[The RedMonk Programming Language Rankings>Google:The RedMonk Programming Language Rankings]]
-[[StackOverflow Most Popular Technologies>Google:StackOverflow Most Popular Technologies]]
-[[TIOBE Index>https://www.tiobe.com/tiobe-index/]]
-[[PYPL|PopularitY of Programming Language index>http://pypl.github.io/PYPL.html]]

~

***代表的な言語
-[[C>Google:C]] &small(コンパイラ型|手続き型);
-[[C++>Google:C++]] &small(コンパイラ型|オブジェクト指向 Google3大言語);

-[[Java>Google:Java]] &small(コンパイラ/インタプリタ型|オブジェクト指向 Google3大言語);

-[[C#>Google:C#]] &small(コンパイラ型|オブジェクト指向);
-[[Objective-C>Google:Objectiv-C]] &small(コンパイラ型|オブジェクト指向 MacOS iOS 公式開発言語);

-[[Python]] &small(インタプリタ型|オブジェクト指向 Google3大言語);
-[[Ruby>Google:Ruby]] &small(インタプリタ型|オブジェクト指向);

-[[JavaScript]] &small(インタプリタ型|オブジェクト指向);
-[[PHP]] &small(インタプリタ型|オブジェクト指向);

-[[Processing]] &small(デザイナー・アーティストのためのプログラミング言語);
--[[p5.js]] &small(Processing を JavaScript で・・);


-[[R言語>Google:R言語]] &small(統計解析向けのプログラミング言語と開発実行環境);
~

以下、一般には「プログラミング言語」とは区別されます。

-[[SQL>Google:SQL]] &small(データベース言語(問い合わせ言語));

-[[HTML]] &small(マークアップ言語);

-[[CSS]] &small(スタイルシート言語);
--[[Sass(SCSS)]] &small(CSSのメタ言語 Rubyでコンパイルが前提);

~

***コンパイラ型とインタプリタ型
コンピュータのCPUは単なる計算機で、0と1で書かれた「機械語」しか理解出来ません。そこでソースコードを機械語に翻訳・通訳する必要が生じます。プログラミング言語は、その仕方の違い、つまり「一括して翻訳する」か「一文ずつ通訳する」かの違いで区別されます。

-コンパイラ型
ソースコードを事前に機械語へ「一括変換」します。結果、実行時の変換プロセスがない分、高速処理が可能になります。また、実行時に変換するための仕組みが必要ないので、単独でプログラムを実行できます。ターゲットとなるOSを選択して動作する、いわゆるネイティブアプリケーションはC++を代表とするコンパイラ型言語で作られています。
例)C, C++, C#, Objective-C, Java, Ruby

-インタプリタ型
インタプリタ型の言語では、書かれたソースコードを逐次読み込んで、それを機械語に変換してコンピュータに命令を与えます。インタプリタ環境があればどこでも動作するため、機種・環境に依存しないプログラミングが可能です。
例)Java, JavaScript, Python, PHP, 

~

***プログラミング言語のパラダイム
初期のコンピュータプログラミングは、入力>処理>出力という計算手順を逐次的に書くだけ・・というシンプルなものでしたが、扱う対象の変化に伴い、その書き方の発想も変化してきました。特にGUI(グラフィカルユーザーインターフェイス)の登場で、マウスクリックなどの「イベント」への対応が中心になるとともに、データと処理(関数)をパック化した「オブジェクト」を中心としたプログラミングへと変化してきました。現在のプログラミング言語の多くは''オブジェクト指向型''のパラダイムを採用しています。
-[[構造化プログラミング>Google:構造化プログラミング]]|[[Structured programming>GoogleImage:Structured programming]]
-[[手続き型プログラミング>Google:手続き型プログラミング]]|[[Procedural programming>GoogleImage:Procedural programming]]
//-[[非手続き型プログラミング>Google:非手続き型プログラミング]]|[[Non-procedural language>GoogleImage:Non-procedural language]]
-[[関数型プログラミング>Google:関数型プログラミング]]|[[Functional programming>GoogleImage:Functional programming]]
-[[''イベント駆動型プログラミング''>Google:イベント駆動型プログラミング]]|[[Event-driven programming>GoogleImage:Event-driven programming]]
-[[''オブジェクト指向プログラミング''>Google:オブジェクト指向プログラミング]]|[[Object-oriented programming>GoogleImage:Object-oriented programming]]


-[[参考:スパゲティプログラム>Google:スパゲティプログラム]]|[[GoogleImage:Spaghetti program]]

~
~
~