「高級言語」を含む日記 RSS

はてなキーワード: 高級言語とは

2020-08-02

プログラムというものが分からない

以下、プログラミングは出来ない俺の認識が間違っている場所があったら教えて下さい。あと、疑問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が正しいのであれば、(サポートするファイル形式問題などを置いておけば)windowsmacは現時点では同じCPUを使っているのだから、同じコンパイラコンパイルしたソフトwindowsでもmacでも動くのではないか

b. たまに『コンパイラを書いて』と言っている人がいるが、そんなに簡単に書けるものなのか?

2020-05-27

anond:20200527140128

現代でも高級言語とかライブラリがあるとはいえ1人月で作るとか自分に縛りプレイかけるくらい出来そう気がする

2020-05-21

anond:20200520204737

職業としてプログラミングできるっつうのは

結果が正しく出力されるだけじゃ駄目なんだよな

webを使って独学とかすると

何となくこうしたら動きました」的な情報も含めて見ることになって

滅茶苦茶危険なんだ

なんでその関数なら大丈夫なのか

文字化けはどうして起こったのか

CSVの読み込みでエラーが発生するのはなぜか

そういう事をきちんと「理解」するには、一定の正しさを提供してくれるナニカが必要になる

高級言語になって要件は変わってきてるが

昔なら、「スタックに3MBも変数積んだらそりゃバグる」みたいな事も

関数の先頭で変数初期化したら治りました」みたいに書いてる人とかいたからね

独学は、あんましおすすめしない

もう情報過多、玉石混交すぎてさ・・・

2020-05-20

anond:20200520165955

少なくとも、最初に学ぶべき言語は、高級言語であるべきだろう。

その点は譲れない。

2020-02-23

2020年プログラミング言語解説

Ruby

まつほろひとゆきが作った日本産コンピューター言語パールというコンピューター言語を元に作られていてWebサービスを作るためのフレームワークを搭載している。代表的WebフレームワークtDiary

C

デニス立地さんがNTTで開発した言語マルチクスというOS作成するために作られた。わざと複雑な言語仕様にすることで自分役職ポジションを守ろうとしていたが、思った以上に世の中の人間はこの言語を使いこなしてしまい、超有名な言語になってしまった。スーファミゲーム制作にさえ使えなほどの超高級言語

まじないと呼ばれるプリプロセッサでの書き換えが必要な謎の文字列を埋め込む必要があったり、言語仕様曖昧な部分も多く、同じソースなのに実行環境によって動きが異なる、欠陥言語である。(32bit向けプログラムが64bit環境動作しないなど)

C++

オブジェクト指向言語。すべてのオブジェクト指向言語はこいつから始まった。

主にWindows上で動作するゲームを作るための言語。今ではUnityとか色々なゲーム開発の環境とかあるが、結局はパフォーマンスとか考えたらC++使うことになる。

代表作はOpenGLDirectX、Window10、LibreOffice など

Java

JavaScriptから派生した言語。読み方は(ジャワジャワ島のジャワ。)。もともとはOracle創始者博士趣味作成して、現在Oracleデータベースの基礎となるテクノロジーアプレットという実行するための専用プログラムインストールしないと、Javaで作ったプログラム(.classファイル)は動作しない。マークコーヒーだと思われがちだが、紅茶(ジャワティー)である

アンドロイドOS作成するためにも使われており、アンドロイドOSカーネルJava制御されている。そのため定期的にGCが走るので、アンドロイド端末は定期的に動作を停止することがある(いわゆるプチフリーズ)。

対策するためにはGC戦略見直してヒープ領域サイズメモリに乗せるキャッシュサイズなどの調整が必要であるが、げんざいのGoogleにはこれらを調整する人員はすでにいない。

このように業務データベースから携帯電話まで幅広く使われているので、Java技術があっても市場価値殆どないと言われている。(みんな使えて当たり前)

PHP

晩年政界への進出を目論んでいた松下幸之助が、未来社会を見据えて開発した言語。主にWebアプリケーション作成するために使われている。PはパナソニックのP。を略してPHP

かんたんにシェルコマンドを実行できたり、クエリストリングに代入した値を直接グローバル評価できたりするなど、洗練されていてとても便利な言語である

HTMLメール本文の中にもPHPの処理を書き込むことができる。

この世のすべてのサーバーに実行環境存在するので、PHPコードさえあれば、コンパイル不要でどのような環境でも動作する。

C言語の100倍生産性が高く、WikipediaFacebookSlackなどの超一流のサイトサービスで大量のアクセスを捌いている。

WardPressと呼ばれるフレームワーク(全世界Webサイト3分の1以上はWardPressで作成されている)を作成している言語であり、この言語なくして今のWeb存在していない。

データベースとも親和性がある、などと言われることもあるが特に根拠はない。

Go

韓国人棋士を倒したAIに特化したプログラム言語Googleが開発しており、もともとはDartという名前だったが、汚いという理由でなまえがGoに変わった。そのため現在Dartという言語存在していない。

AIに特化しているというだけあり、低レイヤむけの実行ファイル作成する必要があるため、コンパイル必要ではあるが、だいたいどの環境向けのバイナリも生成することができる。

デフォルトディープラーニングを使うための機能を持っていたり、プログラムを並列実行するための機能が備わっているので、コア数の多い環境で高速に動くプログラムを作りやすい。

JavaScript

Javaの元になったプロトタイプベースオブジェクト指向言語。読み方はジャワエスクリプト。W3Mというブラウザの上でインタラクティブWebサイトを動かすために作成された言語。もともとブラウザの上で動くための言語だったが、後にSafariブラウザに搭載されていたV6エンジンというJavaScript言語の実行エンジンを分離してNPMというJavaScriptを直接実行できる環境となった。

それ以降JavaScriptはブラウザ以外にVRゴーグルの中などで動くようになった。

並列プログラミング不可能な作りのため、コールバックを多用して、スパゲッティコードを量産することができる。

NPMを使う奴らは、JSブラウザ環境で使われる言語であることを全然考えてないため、WebpackとかBabelといった謎の開発環境をシコシコ積み上げている。いつかその塔は爆発し崩れ去ることになるであろう。

jQuery

Javaと同じくJavaScriptから派生した言語Javaとは互換性は無いが、JavaScriptの上位互換があるため、JavaScriptのコードをそのまま実行することができる。

$マークから始まる命令のみで構成されているとても縁起のいいプログラミング言語。おもにパララックスなどを実現するために利用されていて、WardPressなどのドライバとしても使われている。

JavaScriptの改良版であり、現在JavaScriptと言われているプログラム言語の99%はjQueryのことである。そのため現在慣習的にJavaScriptと呼ばれているもののほぼ全てはjQueryである

jQueryを覚えればJavaScriptは覚えなくても良い。などと言われるが、正確にはjQueryを覚えた頃にはJavaScriptも覚えている。というのが正確である

TypeScript

JavajQueryなどと同じくJavaScriptから派生した言語Microsoftが開発した関数型言語。開発時はF#(エフシャープ)というコードネームだった。

型に特化した言語であり、Microsoft製のVSCodeというIDE環境しか開発、実行が出来ない。(ただしMacLinux上でも動作可能)

TypeScriptを動かすにはサーバーVSCodeインストールする必要があり、言語IDEバージョンアップも多いため、メンテナスンスが困難である

Swift

iOSを作るために開発された言語関数型言語

前進となるObjectiv-Cという言語が、気持ち悪い構文であったため開発者が不足しており、このままではOSメンテナンスもままならない、という理由最初バージョンわずか14日間で作られた言語

Apple製品の上でしか動作しない。ビルドが非常に遅く一日に60回が限度である

LISP

((最強の言語。全ては関数であり、値であり、式である。)

(制御構文も、(一種の式であり、値である。)))

2019-02-07

anond:20190207155013

高級言語レベルで話し合ったって意味ないよ。

意味があるのはマシン語レベルでどっちがアキュムレータにセットされて~ってあたりになって初めて扱いに差が出る。

2018-11-25

anond:20181125115229

高給アセンブラとか中級言語とか低級よりだとか、言う人はいるけど、ふつう高級言語に分類される。

アセンブリ言語が低級で、それ以外が高級だっていうのが一般的な分類。

anond:20181125112605

IT情報科学なんですが、、、、、、。

C言語ですら高級言語扱いされてた時代社会に出たゲイツとかと今の学生を一緒にするなよ。

2018-11-09

anond:20181108133127

すごく面白いな。多品種少量生産製造業付加価値を出していくには、バリエーション出す土台となる、ある程度シンプル生産設備があるということなのだろうか。

スコットランド博物館で初期の蒸気機関を見たことがあるんだけど、もう天井に届きそうなくらい、とにかくでかいんだ。プリミティブな機械って、部品がそれぞれ独立性が高くて、ゴツゴツとおおざっぱに大きいということがよくわかる。

機械が洗練されていくにしたがって、機能がしっかり分節された部品同士の有機的な結合度合いが高まって、見た目にはコンパクトシームレスで美しいんだけど、素人が触ると、ぎりぎりのところで成立しているバランスがすぐに壊れてしまう。メーカー側の想定範囲内のチューニングしか動かないようになっている。コンピュータも道具としての洗練度が高まるにつれて、そういう方向に向かっているように思う。

ユーザーがあれこれカスタマイズして試せるようにするには、そうすることを最初から設計思想に取り込んでいくしかないのだと思う。Raspberry Piとか、IOTデバイス高級言語コーディングで作れるブロックとか、カスタマイズを前提としたコンピュータは、昔ながらのいわゆるパーソナルコンピュータとは別方向に進化を始めていて、これはこれで、PCとは別の使いこなし方を要求しているように見える。難しそうだな、と思ってたけれど、こういう製造業の人たちの創意工夫を見て、なんだか自分セルフビルドしてみたくなってきたよ。

2018-08-08

anond:20180807205430

君は君のスマホがどのように情報をやりとりしているか理解できているか情報電波に、光に、導体に、どのように乗るか理解できているかOSが何をしているか理解できているかアセンブラから高級言語まで、どのように組み立てていくのか理解できているかネットワークがどのように構築され背景にどのような理論があるのか知っているか待ち行列理論を知っているか情報理論を知っているかエントロピーを知っているか統計的機械学習がどのように動くのか理解できるか。グレブナー基底を用いた数学証明コンピュータで構築できるか。君が情報に関わる者全てを工事現場の土方だと思うなら視野があまりにも狭い。君が土方なら私は君の何千倍も優秀な土方であり、そしてかつ何よりその前に建築家だ。

2018-06-14

プログラムコメントを書かない派が増えている理由

第1の理由はもちろん、高級言語の普及により本当にやりたいことだけを書けば良くなってきたことだろう。

コメントを書かない派もCやあるいはアセンブラを書くときコメントが欲しくなるはず。

それともう一つ、最近エディタシンタックスハイライトにも理由があると思う。

Atomデフォルトテーマは黒背景で、コメントはグレーで表示される。

背景とコメントカラーコントラストが小さいので、「コメントの部分は重要でない」という印象を無意識のうちにユーザーに与えていると思う。

自分は適度にコメントを書いたほうがよい、むしろプログラム見出しの役目を果たすと考えているので、エディタ上でもコメントはもう少し目立つ色にしている(文章でも見出しは本文よりフォントが大きいように)。

2018-05-29

クラウドのみにするって

最近クラウド流行ってるからって全部クラウドに移行するなんていうのをたまに聞く

自分で面倒なことしなくていいから楽だとは思うけど、それってインフラ面をできる人がいなくなるということじゃないの?と心配になる

ほとんどの人がクラウド使うのが当たり前になった頃に、AWSなどが値上げしても、もう1から環境作れる人がうちにいないから高いけど払うしか無いみたいなことになりそう

他にもクラウド提供してる会社がなにかの理由でやめたりしたらすごく大変そう


からクラウド使うにしても全クラウド頼りってなんか賛成できない


でも考えてみたら、今って高級言語かばかりでCとかアセンブリ書ける人は減ってると思うし、IT系会社でもC言語とか低レイヤー系を扱える人が全然いないところだって普通にあるわけだ

私自身それらの言語あんまり詳しくないが、必要になることがないから困ってはない


同じようにクラウド化もインフラの設定や環境作りなんて専門の人に任せておいて、それらに興味がある人でもなければ基本は知る必要もないことになりつつあるのかな





2018-05-01

anond:20180501103115

判定フラグ実装が1ビット前提なのに高級言語インプリメントされているという発想になるとは恐れ入る。

anond:20180501102237

いまどきの高級言語なら定義済みかundefかってとこを1bitフィールド自体の値じゃなく処理系の方で管理してるんじゃないですかね

2017-06-14

http://anond.hatelabo.jp/20170614011318

そんなやついるの?

高級言語をやってるってことはアセンブラバカにすることはできないと思うんだけどね.

ポップ,プッシュとか考えながらプログラム書くのかなり難しいし,高級言語なんて余裕でできるでしょ.

バカにしている人は素人じゃないか

アセンブラ普通に楽しいんだけど

なんで高級言語やってる人って馬鹿にしてくるんやろ

2016-09-19

なぜ手書きにこだわる?

自分不器用なせいかグラフ手書きが致命的に遅かったので、2年前期の実験危機感を感じた自分は2年の夏休み中にpythonを覚え、今まで苦労していたグラフプロットなどをパソコン上で全部自動化しようと考えた。日本語情報が少ないため(あっても多少古かったりすることが多かった)、情報をかき集めるのに相当苦労したが、夏休みが終わるころにはjupyter notebook(名前通りノートブックのような実行環境セルごとにコードを実行するという形をとっている)上で統計処理をしたりそのデータを基にグラフプロットするのはある程度できるようになっていた。

早速2年後期の実験pythonを試してみたが、その威力は凄まじく、今まで時間のかかっていた作業が劇的に効率化した。pythonモジュールであるpandas,numpyを使えばデータ列を文字式のように扱えるので(例えば実験データをdataとして、そのデータをすべてcos関数に代入したかったらnumpy.cos(data)と書けばよい、Excelと似たようなものだがこちらは変数として扱っているので使いまわしが容易である)、Excelでちまちま関数セル入力して列全体に引き伸ばすという操作もしなくていい。グラフコマンドで出力するので当然だが今まで苦労していた手書きプロット作業はなくなった。GUIありきのExcelと違ってコードひとつグラフの罫線の調整などもかなり簡単にできる。高級言語だけあってコードは組みやすく、実験中に即興プログラムを組むことも割りとできる。しかコードさえ組んでしまえばあとは実行するだけで計算グラフの描画を一気にやってくれるので、実験結果確認が極めて素早く行えるようになった。しかもjupyter notebookはmarkdown形式文章を埋め込めてメモ書きも残せるし、mathjaxに対応しているのでlatex形式の数式も途中に挟むことが出来る。最高の環境だと思った。しかし良いことばかりではなかった。

パソコンで全部やろうとする自分を見た一部のTAはなぜか自分グラフ手書きしろ要求してきた。自分反論した。「グラフならパソコンですでに出力できているのになぜわざわざ手書きにする必要があるのか?」これに対するTAの答えはだいたい「平等性を保つため」、「他のみんなは手書きでやっている」、「理解を深めるため」、「他学科手書き必須から」というような感じである自分にとっては、これらすべてが理解できなかった。そもそも手書きにすることによって実験に対する理解がどう深まるというのか?自分はむしろ手書きを徹底的に排除することによって、煩雑作業をする時間を考える時間に充てた。そのおかげで実験に対する理解は以前と比べ物にならないくらいに深まった。手書きじゃなければ理解が深まらない理由はない。そもそもパソコンのほうが厳密にコードを組まなければならない分だけ理解力要求されるはずである。「理解を深めるため」といっている本人だって結局その言葉意味もわからず言っているにすぎない。

平等性」に関しては全く別のTAから複数回言われた。「パソコンを使って効率化しようとするのはずるい」と言いたいのか、このTAは?pythonだって1ヶ月間死に物狂いで情報をかき集めて覚えたのに、それのどこがずるいというのだろう。平等性を掲げて効率化を否定し、全員に同じ作業強要させ、「成績」をちらつかせて脅すのはずるくないのか?みんな一緒に抑圧されましょうということか?これを言われたときに感じた何とも言えない吐き気のようなものは今でもうっすらとだが覚えている。正直なところ、プログラミングが出来るというだけでむしろ褒められると思ったのだ。パソコンが使いこなせるほうが印象はいいに決まってると思っていたのも、結局は自分勘違いだった。

pythonを使い始めてからの2年後期、3年前期を通して4,5回ぐらいTA(全員別の人)に「手書きしろ」と言われたが、言われるたびに反論するのもいい加減に疲れてきた。なぜ手書きにする必要があるのか、自分は聞かれるたびにこう聞き返した。まともな答えを返したTAは一人もいなかった。大学先生担当する実験PCは駄目なんて言われたことは一度もなかったし、どうもTA勝手に「手書きしろ」と言っているだけらしい。「他学科パソコン禁止から」とかいう非論理的ルール鵜呑みにしてそれを適用しようとする姿勢にも無性に腹が立った。

TAがいうには手書きコピペ防止の意味もあるらしい。本当に手書きにしたらコピペが減るのか?パソコンにしたらコピペが増えるというが、それは果たして本当に「増えた」のだろうか?確かにコピペするのは手書きと違って簡単だが、コピペするやつは手書きだろうがパソコンだろうがコピペする。そもそも自分の頭で文章を書く能力がないかコピペするのであって、パソコン制限たかコピペがなくなるという理屈おかしい。そんなにコピペが嫌だったらむしろ最初からコピペをチェックしやす電子データに限ってしまえばいいと思う。パソコン有りにしてコピペが増えたというのは、手書きレポートでは見逃していた分のコピペがばれて、それで数が増えたように見えたという可能性もある。むしろパソコンからこそコピペを見破れるのではないだろうか?

自分は、手書き不正の温床ぐらいに思っている。手書き場合見かけ上はコピペしたことがばれにくいし、グラフもそれっぽく適当に書いても適当プロットしたことはほぼばれないし、そもそもアナログデータ機械検閲にかけにくいためどの程度コピペなのかを判定する労力だって膨大過ぎる(別のTAに話を聞いたところ、採点する側から言わせるとコピペしたこと自体結構分かるものらしい)。手書き強制するということは、すなわち不正ごまかす余地を与えているに過ぎない。本気でコピペをなくそうとするならば、いっそのことすべて電子化してしまったほうがよいとすら思う。

pythonを使い始めてから1年経ち、「手書きにしてください」と言われるたびに反論していったが、元々自己主張の弱い引っ込み思案なタイプのために、自己主張してちゃんと言い返すというのは精神的な負担が大きかった。「パソコンではなぜ駄目なのか」を強く主張するたび、ものすごく疲れがたまってしまい、実験がない日でも「なぜこんな当たり前のことをわざわざ言わなければならないんだろう」と思い返してしまうせいでどんどんやる気を無くしていった。

なぜ大学の一部にはパソコンを使わせたがらない空気があるのだろう。この人たちは、手書きが苦手な自分にとっての最後の砦すら壊すつもりなのだろうか。なぜ手書きにこだわるのだろうか。

2015-06-17

http://togetter.com/li/835942

セルフホスティング論争について俺がモヤモヤするのは2点

第一に、発端となった元ツイートには「非エンジニア新卒女子」とはっきり書いてあるのに

エンジニアとしては絶対に雇いたくない》

《旧式言語を学ばずに関数型言語一本槍でエキスパートを目指すような感じの方》

《「まず軽く触れてみよう」とか「趣味でやってみるか」といった程度ならいいのですが》

《実際には肝心なことを何も知らないのに、なんか知っていると思い込んでいる状態が、私いわく「脳味噌膿んでる」》

ひどい書きっぷりだよね。

もし自分当事者だったら「見ず知らずの人になんでここまで言われなきゃいけないの」と傷つくと思う。

第二に、下位層のレイヤーについて知っていなければ上位層のことをちゃんとやる資格がない

という態度が明らかに本人のダブルスタンダードっぷりを示している点

OCamlで書かれたコード関数型のパラダイム

コンパイルされたマシン語コード手続き型のパラダイム

と言いたいのだと思うけど、最近CPUマシン語に書かれていある命令をそのまま実行しない。

インテル場合CISC命令セットで記述されたコードRISC的なマイクロコードに分解・解釈して実行する。

さらに内部はパイプライン化されているため、単純に「1命令ずつ逐次実行」されてもいない。

外側から観察するとあたかマシン語命令列をひとつずつ逐次実行しているかのように振る舞っているだけだ。

マシン語コード記述されたプログラムが、命令通り入力と出力を繰り返すなら、内部でどのような先読み予測分岐を繰り返していても問題ない?マシン語の忠実な実行装置とみなしてよい?もちろん回路の設計ミスで誤動作するかも知れないけど、それがプログラマの「根本的な過ち」になる?

これは高級言語マシン語関係とまったく同じだ。

OCaml世界記述されているロジックが、OCaml仕様通りにちゃんと動作すれば、その下位層にあるマシン語がどういうパラダイム記述されていても関係ないと考えていいと俺は思う。

余談1

くだんの女子について、周辺のツイートを見てみると(完全に部外者憶測だけど)Railsを主力とするソフトウェア企業に非エンジニアとして新卒入社した新人プログラミングに興味を持ったのに対して上司OCamlの本を教科書として渡したのでそれを学んでプログラミング考え方を身につけた。その後Railsについても学んでみようとしたが、考え方のギャップに強い違和感を覚えた。…という経緯みたいだ。

余談2

https://twitter.com/camloeba/status/611051620877537281

https://twitter.com/sessoh/status/611052396161183744

このやりとり、拙僧さんが「肝心なこと」と思ってることを卯之助さんは「重要でない」と言ってるんじゃないですかね。

ログイン ユーザー登録
ようこそ ゲスト さん