はてなキーワード: 高級言語とは
なんで中身の構造のうちで、IFとWHILEで組み立てられているロジックという
特定の階層の構造までを知らなければならないと考えるのですかか?
なぜ高級言語を成立させている機械語の構造まで理解しないのか。
なぜ機械語を成立させているCPUの論理回路まで理解しないのか。
なぜCPUの論理回路を成立させているトランジスタ特性まで理解しないのか。
なぜトランジスタ特性を成立させている物理法則まで理解しないのか。
なぜあなたは、フレームワークの中身まで理解しなければならないと考えるのに、
物理法則の中身までは理解しなくてもよいと考えているのですか?
以下、プログラミングは出来ない俺の認識が間違っている場所があったら教えて下さい。あと、疑問2つを教えて下さい。
【俺の認識】
1. コンピューター(というかCPU)が実行する命令は【機械語】で書かれている。たとえばx86CPUの場合、0x04ならば『imm8をALに加算する』命令、0x90ならば『何もしない』などである。
2. 流石に機械語のままでは人間がプログラムするには不便なので、機械語をそのまま人間にも意味が分かるように1対1対応で書き直した【アセンブラ言語】というのがある。0x04ならば『ADD AL, imm8 』、0x90ならば『NOP』と表記される。
3. アセンブラ言語のように機械語と1対1対応している言語を【低級言語/低水準言語】と言う(この呼び方、4で書く高級言語が出来てから生まれたレトロニムか?)
4. アセンブラのままでプログラムするのも困難である場合が多いので、機械語と1対1対応していないプログラミング言語もある。このような言語を【高級言語/高水準言語】と言う。
5. 高級言語で書かれたものはそのままではコンピューターには実行できないので、【コンパイラ】というソフトによって機械語に変換している。
6. 高級言語で書かれた状態を【ソースコード】と言う。このソースコードをx86用のコンパイラでコンパイルすればx86で動くソフトになり、SPARC向けにコンパイルすればSPARCで、PowerPC向けにコンパイルすればPowerPCで動くソフトになる。
【疑問】
a. 認識6が正しいのであれば、(サポートするファイル形式の問題などを置いておけば)windowsとmacは現時点では同じCPUを使っているのだから、同じコンパイラでコンパイルしたソフトはwindowsでもmacでも動くのではないか?
まつほろひとゆきが作った日本産のコンピューター言語。パールというコンピューター言語を元に作られていてWebサービスを作るためのフレームワークを搭載している。代表的なWebフレームワークはtDiary
C
デニス立地さんがNTTで開発した言語。マルチクスというOSを作成するために作られた。わざと複雑な言語仕様にすることで自分の役職ポジションを守ろうとしていたが、思った以上に世の中の人間はこの言語を使いこなしてしまい、超有名な言語になってしまった。スーファミのゲーム制作にさえ使えなほどの超高級言語
おまじないと呼ばれるプリプロセッサでの書き換えが必要な謎の文字列を埋め込む必要があったり、言語仕様に曖昧な部分も多く、同じソースなのに実行環境によって動きが異なる、欠陥言語である。(32bit向けプログラムが64bit環境で動作しないなど)
オブジェクト指向言語。すべてのオブジェクト指向言語はこいつから始まった。
主にWindows上で動作するゲームを作るための言語。今ではUnityとか色々なゲーム開発の環境とかあるが、結局はパフォーマンスとか考えたらC++使うことになる。
代表作はOpenGL、DirectX、Window10、LibreOffice など
JavaScriptから派生した言語。読み方は(ジャワ。ジャワ島のジャワ。)。もともとはOracleの創始者の博士が趣味で作成して、現在のOracleデータベースの基礎となるテクノロジー。アプレットという実行するための専用プログラムをインストールしないと、Javaで作ったプログラム(.classファイル)は動作しない。マークはコーヒーだと思われがちだが、紅茶(ジャワティー)である。
アンドロイドOSを作成するためにも使われており、アンドロイドのOSカーネルはJavaで制御されている。そのため定期的にGCが走るので、アンドロイド端末は定期的に動作を停止することがある(いわゆるプチフリーズ)。
対策するためにはGC戦略を見直してヒープ領域のサイズやメモリに乗せるキャッシュのサイズなどの調整が必要であるが、げんざいのGoogleにはこれらを調整する人員はすでにいない。
このように業務用データベースから携帯電話まで幅広く使われているので、Javaの技術があっても市場価値は殆どないと言われている。(みんな使えて当たり前)
晩年政界への進出を目論んでいた松下幸之助が、未来社会を見据えて開発した言語。主にWebアプリケーションを作成するために使われている。PはパナソニックのP。を略してPHP
かんたんにシェルコマンドを実行できたり、クエリストリングに代入した値を直接グローバルで評価できたりするなど、洗練されていてとても便利な言語である。
HTMLやメール本文の中にもPHPの処理を書き込むことができる。
この世のすべてのサーバーに実行環境が存在するので、PHPのコードさえあれば、コンパイルも不要でどのような環境でも動作する。
C言語の100倍生産性が高く、Wikipedia、Facebook、Slackなどの超一流のサイトやサービスで大量のアクセスを捌いている。
WardPressと呼ばれるフレームワーク(全世界のWebサイトの3分の1以上はWardPressで作成されている)を作成している言語であり、この言語なくして今のWebは存在していない。
データベースとも親和性がある、などと言われることもあるが特に根拠はない。
韓国人棋士を倒したAIに特化したプログラム言語。Googleが開発しており、もともとはDartという名前だったが、汚いという理由でなまえがGoに変わった。そのため現在はDartという言語は存在していない。
AIに特化しているというだけあり、低レイヤむけの実行ファイルを作成する必要があるため、コンパイルが必要ではあるが、だいたいどの環境向けのバイナリも生成することができる。
デフォルトでディープラーニングを使うための機能を持っていたり、プログラムを並列実行するための機能が備わっているので、コア数の多い環境で高速に動くプログラムを作りやすい。
JavaScript
Javaの元になったプロトタイプベースのオブジェクト指向言語。読み方はジャワエスクリプト。W3Mというブラウザの上でインタラクティブにWebサイトを動かすために作成された言語。もともとブラウザの上で動くための言語だったが、後にSafariブラウザに搭載されていたV6エンジンというJavaScript言語の実行エンジンを分離してNPMというJavaScriptを直接実行できる環境となった。
それ以降JavaScriptはブラウザ以外にVRゴーグルの中などで動くようになった。
並列プログラミングが不可能な作りのため、コールバックを多用して、スパゲッティーコードを量産することができる。
NPMを使う奴らは、JSがブラウザ環境で使われる言語であることを全然考えてないため、WebpackとかBabelといった謎の開発環境をシコシコ積み上げている。いつかその塔は爆発し崩れ去ることになるであろう。
Javaと同じくJavaScriptから派生した言語。Javaとは互換性は無いが、JavaScriptの上位互換があるため、JavaScriptのコードをそのまま実行することができる。
$マークから始まる命令のみで構成されているとても縁起のいいプログラミング言語。おもにパララックスなどを実現するために利用されていて、WardPressなどのドライバとしても使われている。
JavaScriptの改良版であり、現在JavaScriptと言われているプログラム言語の99%はjQueryのことである。そのため現在慣習的にJavaScriptと呼ばれているもののほぼ全てはjQueryである。
jQueryを覚えればJavaScriptは覚えなくても良い。などと言われるが、正確にはjQueryを覚えた頃にはJavaScriptも覚えている。というのが正確である。
JavaやjQueryなどと同じくJavaScriptから派生した言語。Microsoftが開発した関数型言語。開発時はF#(エフシャープ)というコードネームだった。
型に特化した言語であり、Microsoft製のVSCodeというIDE環境でしか開発、実行が出来ない。(ただしMacやLinux上でも動作可能)
TypeScriptを動かすにはサーバーにVSCodeもインストールする必要があり、言語やIDEのバージョンアップも多いため、メンテナスンスが困難である。
前進となるObjectiv-Cという言語が、気持ち悪い構文であったため開発者が不足しており、このままではOSのメンテナンスもままならない、という理由で最初のバージョンがわずか14日間で作られた言語。
すごく面白いな。多品種少量生産で製造業が付加価値を出していくには、バリエーション出す土台となる、ある程度シンプルな生産設備があるということなのだろうか。
スコットランドの博物館で初期の蒸気機関を見たことがあるんだけど、もう天井に届きそうなくらい、とにかくでかいんだ。プリミティブな機械って、部品がそれぞれ独立性が高くて、ゴツゴツとおおざっぱに大きいということがよくわかる。
機械が洗練されていくにしたがって、機能がしっかり分節された部品同士の有機的な結合度合いが高まって、見た目にはコンパクト&シームレスで美しいんだけど、素人が触ると、ぎりぎりのところで成立しているバランスがすぐに壊れてしまう。メーカー側の想定範囲内のチューニングでしか動かないようになっている。コンピュータも道具としての洗練度が高まるにつれて、そういう方向に向かっているように思う。
ユーザーがあれこれカスタマイズして試せるようにするには、そうすることを最初から設計思想に取り込んでいくしかないのだと思う。Raspberry Piとか、IOTデバイスを高級言語のコーディングで作れるブロックとか、カスタマイズを前提としたコンピュータは、昔ながらのいわゆるパーソナルコンピュータとは別方向に進化を始めていて、これはこれで、PCとは別の使いこなし方を要求しているように見える。難しそうだな、と思ってたけれど、こういう製造業の人たちの創意工夫を見て、なんだか自分もセルフビルドしてみたくなってきたよ。
君は君のスマホがどのように情報をやりとりしているか理解できているか。情報が電波に、光に、導体に、どのように乗るか理解できているか。OSが何をしているか理解できているか。アセンブラから高級言語まで、どのように組み立てていくのか理解できているか。ネットワークがどのように構築され背景にどのような理論があるのか知っているか。待ち行列理論を知っているか。情報理論を知っているか。エントロピーを知っているか。統計的機械学習がどのように動くのか理解できるか。グレブナー基底を用いた数学証明をコンピュータで構築できるか。君が情報に関わる者全てを工事現場の土方だと思うなら視野があまりにも狭い。君が土方なら私は君の何千倍も優秀な土方であり、そしてかつ何よりその前に建築家だ。
第1の理由はもちろん、高級言語の普及により本当にやりたいことだけを書けば良くなってきたことだろう。
コメントを書かない派もCやあるいはアセンブラを書くときはコメントが欲しくなるはず。
それともう一つ、最近のエディタのシンタックスハイライトにも理由があると思う。
Atomのデフォルトのテーマは黒背景で、コメントはグレーで表示される。
背景とコメントのカラーコントラストが小さいので、「コメントの部分は重要でない」という印象を無意識のうちにユーザーに与えていると思う。
自分は適度にコメントを書いたほうがよい、むしろプログラムの見出しの役目を果たすと考えているので、エディタ上でもコメントはもう少し目立つ色にしている(文章でも見出しは本文よりフォントが大きいように)。
最近クラウドが流行ってるからって全部クラウドに移行するなんていうのをたまに聞く
自分で面倒なことしなくていいから楽だとは思うけど、それってインフラ面をできる人がいなくなるということじゃないの?と心配になる
ほとんどの人がクラウド使うのが当たり前になった頃に、AWSなどが値上げしても、もう1から環境作れる人がうちにいないから高いけど払うしか無いみたいなことになりそう
他にもクラウド提供してる会社がなにかの理由でやめたりしたらすごく大変そう
だからクラウド使うにしても全クラウド頼りってなんか賛成できない
でも考えてみたら、今って高級言語とかばかりでCとかアセンブリ書ける人は減ってると思うし、IT系の会社でもC言語とか低レイヤー系を扱える人が全然いないところだって普通にあるわけだ
私自身それらの言語はあんまり詳しくないが、必要になることがないから困ってはない
同じようにクラウド化もインフラの設定や環境作りなんて専門の人に任せておいて、それらに興味がある人でもなければ基本は知る必要もないことになりつつあるのかな