t開発環境編::各言語やフレームワークの解説について

軽くプログラム言語をまとめてみました。
プログラム言語やフレームワークや開発環境 説明
C(K&R) 古いタイプのCで手続型言語。2passコンパイラで、1パス目でマクロを展開して2パス目でCをコンパイルします。なので、前方参照が出来ないのです。バックパッチという方法があり3パスにすれば前方参照可能だったはずですが、当時のマシンスペックはすべてにおいて低かったのです。ちなみにMASM等アセンブラも2-3パスですが、optasmは1パスアセンブラで、複雑なマクロの展開と出力objの最適化をします。無駄nopがほぼ無いです。しかも高速アセンブルです。自分は未だに使います。VC/C++は64bitもしくはユニバーサルアプリの場合、インラインアセンブラが使えません。なので、MASM64(ml64.exe)を使います。intel-x86も64bitになって、レジスタも追加&拡張されてRISCっぽくなっているけど(やっとレジスタ増えたのは大きい。MC680x0-CPUのレジスタセットのきれいさと汎用性や多さは凄い)、スタックとか厳密だからそこはきちっとします。
ANSI-C 標準化されたCで厳密であり、関数の構造文でローカル変数の宣言ができない。
C99 新しいタイプのC言語であり、ローカル変数が使えるなどの拡張がされている。実はまだまだC言語は開発されている。
C++ オブジェクト指向であるが、難解なC言語。ANSIに標準化されるまでもめにもめた。著者はリアルタイムだったので、テンプレートと例外処理、名前空間(namespace)、新形式のキャスト、ブール型の特にテンプレートとnamespaceが揉めた。 ベターCとして使う人もいますが、せっかくのテンプレートやnamespaseなんで、自分は使います。
C++98/C++03/C++11/C++14/C++17/(次はC++20の予定) 拡張されていったC++。
Objectiv-C/C++ C++は揉めにもめたがそれに嫌気がさした人が作ったオブジェクト指向言語。当時のCPUは遅かったが非力なマシンでも動く(まあ、4bit-cpuのプログラムを組んだり、6502やpicのプログラムを組んだ自分からしたら非力ではない)。記号で判別して(この記号が分かりづらいと言ってobjectiv-c/c++は嫌われた)コンパイラへの負担を減らしてある。当時のスティーブンジョブズが作ったNeXT社が買い取りNeXTコンピュータのNeXTSTEP-OSで採用されて、その後ジョブズがApple社に戻ったときにNeXT社がApple社に買われた。NSというライブラリの文字列の頭にNeXTSTEPの面影が残る。
Swift Objective-C/C++が古くなり、モダンな言語とは言いがたく、しかも取っつき辛かったので作られたオブジェクト指向言語。breakスルーがないタイピング数を少なくさせたJAVAやC#みたいな物。XCode環境下では、楽ちんな言語。
XCode eclipsやandroidStudioyやVS環境みたいな物。ちなみにiOS13/iPadOS13用のXCode13は、それ以下のバージョンの物はコンパイル出来ないので、XCode10か12辺りと共存させる。しかしXCode13は、画面分割がよりフレキシブルになって使いやすいけど、初めての人はびっくりするかもしれません。ちょっと古い話なんですが、GooglePlayはandroidOSのバージョン違いの同じ物を販売させてくれますが、app storeでは出来ませんでした。今回はどうなるか分かりませんが。第一、app store connectに名前が変わったのもつい最近ですよね。困ります。
Java Javaはモダンなオブジェクト指向言語であり、JavaVMさえあればどの環境でも動く中間言語コンパイラで、動作はJavaVMが実行時コンパイルする(JIT)。
Kotolin Javaのスーパーセットで、Javaとの相互運用が可能なうえに記述が簡素になる、一応用クライアント言語。
Scala Javaに似ていますがオブジェクト指向言語と関数型言語の特徴を統合したプログラミング言語。Javaでできなかったこともできます。
Pascal LL(1)でワンパスでコンパイルできる、非常に簡素な言語でBASIC以上にわかりやすいと自分は考えている。自分も自身でPascalコンパイラが書けた。
Turbo-Pascal 旧ボーランド社のアンダースヘルスバーグが開発した言語。当時の非力な16bitPCでも軽快に動くIDE(TASMで作られた)と、低価格で学習も容易な言語。
VB 正式名称VisualBasic。非常にモダンで強力なBASICで、古いBASICから脱却して構造化プログラミング言語で、一部オブジェクト指向も取り入られています。未だに現場では使われています。個人的にはJavaや後述するDelphiやC#に似ていると思います。
VBA 正式名称VisualBasic for applocation。MS-OfficeのマクロをVBでかける物で各アプリのマクロに展開されます。
Delphi アンダースヘルスバーグが開発した言語。一時期はVisualBasicと並ぶ入門者用言語ですが衰退していきましたがコアなファンは多くまた復活し様としています。
C# アンダースヘルスバーグが開発した言語。C#とDelphiが似ているのは作っている人が同じ人だから。C/C++よりJavaやDelphiに影響を受けたオブジェクト指向言語。非常に学習が楽で、JavaScript->C99->C#->JAVA->Swift->C++の順番で学ぶといいかもしれない。配列は確か10個までは意識しいなくても良いけど、やっぱり最初から確保するか動的に確保した方が良い。
ActionScript 開発は無償でFlashDeveloperを使いブラウザベースのゲームまで作れます。自分もシューティングゲームを数日で作れました。ユーザーはAdobeFlashPlayerをインストールしたWebブラウザでゲームの実行が出来ますが、スマフォにはFlashPlayerが入れられません。ですのでAdobeAnimate CCWebGLや他のテクノロジーに移るでしょう。言語仕様はActionScript1.0はECMAScriptに似ていて同様のJavaScriptに似ていましたが、ActionScript2.0/3.0はJAVAに似ています。
JavaScript Javaと名称が似ているが、全く違うオブジェクト指向スクリプト言語で、非常に学習が容易。
jQuery.js パワフルなJavaScriptフレームワークですが、もう後述するNode.js等への移行が始まっています。しかしながら現場ではまだ使われます。ここら辺はANSI-CやVisualBasicと経緯が似てますね
Node.js JavaScriptのサーバサイド実行用フレームワーク。学習も非常に容易
Electron.js HTML5+CSS+JavaScriptと言ったWeb系の言語でネイティブアプリを開発するフレームワークで、元々はAtom-Shellと言われていましたが、ATOMはもちろんSlackやVisualStudio CodeもElectronで開発されています。Node.jsを組み込むのでNode.jsの機能やrpmで色々なパッケージをインストールできます。
React.js Webサイト上のUIを構成する為のJavaScriptフレームワークです。React.jsではJSXが使えて便利です。
Vue.js JavaScriptのWebサイト上のUIを構成する為のJavaScriptフレームワークですがReact.jsよりシンプルです。
bash Shellといえばbash,DOS/WINプロンプト,PowerShellがあるが、bashスクリプト(拡張子.sh)は相当何でもできる。本格的に学ぶと本1冊は必要だが、grep等と簡単に連携できる、奥の深いスクリプト言語。
Python オブジェクト指向、命令型、手続き型、関数型などの形式でプログラムを書くことがでる。yumコマンド等はpython2系で実装されており、ディープラーニングなどの人工知能AIに最も使用されている言語で学習やコーディングが容易なので、AIの事だけを考えるだけで良い言語。linuxのLINKでPython2とされています。Python3系をインストールしてlinkを張ったらyumが使えなくなります(抜け道あり)おとなしくPython3のリンクを作りましょう。
Ruby 日本で生まれた、オブジェクト指向スクリプト言語。学習が容易で、あえて言うならばSwiftが似ている。
Ruby On Rails Rubyのほぼ1強のフレームワークで学習が非常に容易。Node.JSと立場は一緒。
PHP 誰もが非常に容易に学習できる、オブジェクト指向スクリプト言語。pdoでMySQL(MariaDB)にもアクセス可能。htmlファイルの中にもPHPは書けます。
CakePHP PHPのフレームワークで、PHPでの開発を容易にしてくれる。Ruby om Railsの影響を強く受けている。
phpMyAdmon PHPで実装されたMySQLの管理ツール。MySQL(MariaDB等も)のデータベースやテーブルの作成を行ったり、データの追加や参照などをSQL文を作成することなくブラウザから行うことができます。MySQL(MariaDB)のポートは3306、PostgreSQLのポートは5432でこのポートは開かないでpublicに開かない。localから何だろうけど、通常はMySQLWorkBench(SQLWorkBench/H)を使って、ユーザー権限でSSHログインして使う。SQLにクエリを出す。単純なSQL文なんて1日有れば覚えるし、実際に仕事でやれば一週間で覚えるし。MySQLのクエリのポケットリファレンスでも持ってればok。普通にteratermでユーザー権限でログインしてmysql -u [MySQLユーザ名] -pでSHOW DATABASES;とかのMySQL文打ち込めばok。
Go Go言語(正式名称はGo)は、モダンでGoコンパイラ自身をGoでかける、非常に強力な言語。C++が嫌いで作られたという逸話があり、言語仕様的には自分が思うにJavaScript/C#/Swiftに似ていて、学習が容易。


あと、言語によってlinkやlinklistと呼ばれるので、注意が必要です。これは全くの別物です。あと、link(ショートカット)もありますよね。
まあ、アセンブラと古いBASICの説明はいらないでしょう。

以上です。

戻る