#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]] ~ ~ ~