それがプロンプトっていうさらにヒューマンフレンドリーなプリプロセッサに変わるだけなんだよなぁ
]]>そうなるとプリプリプリプロセッサーも場合によってはあるじゃん。
じゃあプリプリプリプリプロセッサーもなきにしもあらずじゃん。
そして最終的にはプリ^8プロセッサーみたいに表記されるじゃん。
ひぃひぃひぃお爺ちゃんとかにも同じことが言えるよね。
]]>cat filename.jurina
print "Hello world";
という命令をファイルから受け取ったら
public class filename{
public static void main(String[] args){
System.out.println("Hello world");
}
}
と出力するプログラムをjurinaと名付けるとする
cat filename.jurina
int i=1;
print i;
public class filename{
public static void main(String[] args){
int i=1;
System.out.println(i);
}
}
ものすごく単純なPythonっぽい独自言語を
Javaに置き換えて出力するだけのJava プリプロセッサである
さて、このJurina言語はJAVA VMで動くと思うか?
言いたいことVMを解析して、OPコードを吐くコンパイラを作ろうとしていたが
そもそもコンパイラが作れるならJavaのソースコードを吐いてしまえば良いことに気がついた
]]>for(auto &x:XXX) ;
というコードに対して ;は無意味ってnoteではなくwarningで挙げてくるんだが
こんなコード わざとかいている以外 どんな理由があるんだ・・・
わざわざプリプロセッサでWarining OFFにしなきゃいけねーのかよ つれーな
]]>まつほろひとゆきが作った日本産のコンピューター言語。パールというコンピューター言語を元に作られていてWebサービスを作るためのフレームワークを搭載している。代表的なWebフレームワークはtDiary
C
デニス立地さんがNTTで開発した言語。マルチクスというOSを作成するために作られた。わざと複雑な言語仕様にすることで自分の役職ポジションを守ろうとしていたが、思った以上に世の中の人間はこの言語を使いこなしてしまい、超有名な言語になってしまった。スーファミのゲーム制作にさえ使えなほどの超高級言語
おまじないと呼ばれるプリプロセッサでの書き換えが必要な謎の文字列を埋め込む必要があったり、言語仕様に曖昧な部分も多く、同じソースなのに実行環境によって動きが異なる、欠陥言語である。(32bit向けプログラムが64bit環境で動作しないなど)
C++
オブジェクト指向言語。すべてのオブジェクト指向言語はこいつから始まった。
主にWindows上で動作するゲームを作るための言語。今ではUnityとか色々なゲーム開発の環境とかあるが、結局はパフォーマンスとか考えたらC++使うことになる。
代表作はOpenGL、DirectX、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倍生産性が高く、Wikipedia、Facebook、Slackなどの超一流のサイトやサービスで大量のアクセスを捌いている。
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
JavaやjQueryなどと同じくJavaScriptから派生した言語。Microsoftが開発した関数型言語。開発時はF#(エフシャープ)というコードネームだった。
型に特化した言語であり、Microsoft製のVSCodeというIDE環境でしか開発、実行が出来ない。(ただしMacやLinux上でも動作可能)
TypeScriptを動かすにはサーバーにVSCodeもインストールする必要があり、言語やIDEのバージョンアップも多いため、メンテナスンスが困難である。
Swift
iOSを作るために開発された言語。関数型言語。
前進となるObjectiv-Cという言語が、気持ち悪い構文であったため開発者が不足しており、このままではOSのメンテナンスもままならない、という理由で最初のバージョンがわずか14日間で作られた言語。
Apple製品の上でしか動作しない。ビルドが非常に遅く一日に60回が限度である。
LISP
((最強の言語。全ては関数であり、値であり、式である。)
(制御構文も、(一種の式であり、値である。)))
]]>組み込みのプリプロセッサと何が違うの?
]]>どうせお前のスキルセットは「html,css,js,rails」だろ?
揃いも揃ってそんなんばっかり
スクールで講師に言われるがまま
このご時世にjqueryでせっせとDOM操作して
プリプロセッサも使わずしこしこcss書いて
HTTPメソッドもSQLも理解せずにそれっぽく動くN+1だらけのクソ作っただけだろ?
webプログラマ目指すくせに開発環境構築にDockerも使わず理解してないコマンドをコピペしてローカルに直でインストール
せっかく無料枠あるのにawsじゃなくてHerokuにプッシュするだけのデプロイ
テストコードも書かず
CI/CDツールも使わず
ブランチ運用なんて考えずmasterブランチに直プッシュか?
会社に入れさえすれば先輩がつきっきりで教えてくれるとでも思ってんのか?
先輩を質問責めにする気か?
むりむりやめとけ
そんなんじゃせいぜい年収300
諦めた方が身のため
あばよ
どうしてもなりたいなら↑で挙げたものぐらいは最低限を理解しとけ
「メモ帳一つでプログラマ」なんて時代は終わったんだよ
ここまで言って調べる気にならないなら本当に向いてないよ
]]>https://qiita.com/tkrkt/items/2fc9a9a59ce679aab728
を読んで、HTMLのcode要素のテキストを読むプリプロセッサを考えたけど、
コード書くのが面倒すぎてダメだな。
]]>でもつらつら書いてたら同音異義語を多少緩和させて読みやすくなりそうなので、ローマ字書きするときに普及したらいいなあと思った。
数値文字参照 | 表示 | この増田での意味 |
---|---|---|
́ | ́ | 漢語、外来語を表す。 |
̊ | ̊ | 大和言葉を表す。 |
̄ | ̄ | 長音 |
̈ | ̈ | 単独で発音する。 |
アキュートを付ける。略語の場合には構成する語ごとに付ける。固有名詞は大文字。
1. 混種語で後ろが大和言葉の場合、リングを付ける。
1. 大和言葉同士で連濁が起こらず、且つ分かりづらい場合にリングを付けえる。3重以上の複合語で大きく分かれる箇所にリングを付けるとよい。
1. 固有名詞で単語の切れ目を意識させたい場合は任意で。
ハイフンレスですっきり。
「当機」「冬季」「陶器」「時」「朱鷺」の区別。
- T́ōḱi wa mamonaku t́yakuriku t́aisei ni hairimasu.
- T́ōki órinpikku, tugi wa ṕyontyan de yarurasii.
- T́ōki to ieba, masiko.
- Toki no kane wa kawagoe no midokoro.
- Toki wo yatara mettara tukau Niigataḱen. Tokimeki T́etudō toka mohaya kirakira ńēmu.
「機」 (漢語)と「木」 (大和言葉)の区別
- Kono ḱi wa Śint̊itose he mukaimasu.
- Kono ki nanno ki
リング+トレマの併用例と併用しない例。
- Ǵaruṕanö̊zisan, Ibaraḱi Ōårai no ḱeizai wo uruosu.
- Ǵaruṕan ozisan, Ibaraḱi Ōårai no ḱeizai wo uruosu.
課題
- Maa dono ǵengo demo sō darō kedo, komaru no wa Latin ḿozi no ḿeisi dayo ne. Tatoeba:
- Mise no hito: "T́hī Ṕointo Ḱādo (T-Point Card) wa om̊oti desu ka?"
- Ḱyaku: "Iie, ḱādo wa ṕurasutikku (plastic) desu."
Śeigi no Ḿik̊ata no T́okutyō
Ákud̊ama no T́okutyō
「増田さん」って、言ったり聞いたりするときは一塊のフレーズとして聞くけど(もっと言えばテニヲハまで一塊)、読んだり書いたりするときは「増田」と「さん」に分けて理解するわけで、そういう目と耳とで矛盾する解釈をうまくアルファベットに落とし込めると読み書きしやすいローマ字になるのかな、と思った。
以上3連休前半を無為に過ごした自分への言い訳。
]]>Cの「プリプロセッサが」Cプログラムを生成する純粋関数型言語、
という話ですね。
]]>岡部氏に反する意見を言うと激しく荒らされるからですね。
迷惑がかかるといけないのでリンクしませんが、
住井氏は関数型言語に関する世界最高峰の国際会議の委員長ですね。
エリオット氏のブログは、岡部氏が引用していない部分を読むと、
C言語の「プリプロセッサが」Cプログラムを「生成する」ので、
HaskellのIOモナドがIOアクションを生成するのと同様に
純粋関数型言語とみなせる、という主旨のことが書かれていますね。
岡部氏は「プリプロセッサ」という部分を引用していないようですが。
]]>HaskellのIOモナドが「IOアクションを生成する純粋関数型プログラム」なのと同様、
Cのプリプロセッサは「Cプログラムを生成する純粋関数型プログラム」って言ってるのね。
だから「cpp + C言語処理系」は「Haskell + 処理系」と同じく純粋関数型だと:-)
]]>すげー! Cの「プリプロセッサが」純粋関数型、と言ってる(半ばジョーク)記事の
また都合の良い部分だけを取り出してる……。まさに牽強付会
]]>「プリプロセッサ言語でオブジェクト指向を持ち出すお前が痛すぎる」に対して、横から「オブジェクト指向プログラミング言語でなくてもオブジェクト指向は使えるだろうと思ったけどたぶん話の流れと関係ない」と言ったのが当初の発言。
それに対する返答が「そういう事じゃなくて、可読性および処理速度、オーバーヘッド的な意味でオブジェクト指向は駄目」。
全く話が噛み合ってない。「そういう事」じゃないから、「話の流れとは関係ない」って言ってるのに。
そして「オブジェクト指向プログラミング言語でなくてもオブジェクト指向は使えるだろう」の否定になってない。
これではいくら実例出しても話は進まないだろう。
]]>普通はこの1文で納得できるもんだが
ひょっとしてプリプロセッサ言語では「翻訳」が行われる事とか、オブジェクト指向的な処理をするのは最初にコンストラクタが走るのでオーバーヘッドがかかる事とか、いちいち全部情報処理の専門学校に入りたてのガキに教えるように教えないと全く判らないかい?
]]>オブジェクト指向にオブジェクト指向プログラミング言語は必須ではない。
つまりオブジェクト指向という手法は言語に関係なく使うことができる。
だから「プリプロセッサ言語でオブジェクト指向を持ち出す」というフレーズに違和感を覚えた。
]]>・zlibはソースをDLして解凍する。できたフォルダをzlibにリネームしてまとめフォルダに突っ込む。zlibフォルダ内のcrc32.cをemucrc32.cにリネームする。
・libpngはコンパイル済みバイナリをDLして解凍する。できたフォルダをlibpngにリネームしてまとめフォルダに突っ込む。ソリューションエクスプローラでlibPNGフォルダ内の*.cをプロジェクトから除外する。プロジェクトのプロパティで追加の依存ファイル一覧にあるlibpngmt.libをlibpng.libにリネームする。
・fmodはver.3系(ver.4系でのビルドは未確認)のコンパイル済みバイナリをDLして解凍する。できたフォルダの中のフォルダをfmodにリネームしてまとめフォルダに突っ込む。
・nasmはコンパイル済みバイナリをDLして解凍する。できたフォルダの中のフォルダをnasmにリネームしてまとめフォルダに突っ込む。nasmはプロジェクト中の*.asmのビルドに必要になる。後の*.asmのビルド設定との整合性のためこの通りに配置すること。
・プロジェクトのプロパティでDirectX SDKのIncludeとLibフォルダにパスを通す。
・プロジェクトのプロパティで、「リンク前のイベント」に次のコマンドを追加する。
pushd "$(SolutionDir)..\"
del "i386\*.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\2xsaimmx.asm" "-oi386\2xsaimmx.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\bilinear.asm" "-oi386\bilinear.obj"
rem "$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\c4.asm" "-oi386\c4.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\fxemu2.asm" "-oi386\fxemu2.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\fxemu2b.asm" "-oi386\fxemu2b.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\fxemu2c.asm" "-oi386\fxemu2c.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\fxtable.asm" "-oi386\fxtable.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\sfxproc.asm" "-oi386\sfxproc.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\spc.asm" "-oi386\spc.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\zsnes.asm" "-oi386\zsnes.obj"
rem "$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\zsnesc4.asm" "-oi386\zsnesc4.obj"
popd
上記のコマンドに出てくる11個の*.objファイルをプロジェクトに追加する。ただしコマンドがコメントアウトされている2つ(c4.objとzsnesc4.obj)はビルドから除外しておくこと。
・SARマクロ(sar.h)が原因でコンパイラが死ぬので、このマクロを不使用にするためにport.hの277行のRIGHTSHIFT_IS_SARマクロ定義を未定義にする。
ここまでの手順でビルドが通る。
TODO:
・プリプロセッサZSNES_C4を有効にする時の設定
]]>それをいうなら変数ポインタ・関数ポインタでは?
(というか、ポインタは単にアドレスを保持する変数なだけで、どっちもそれの応用だよね。シンプルでよく出来た仕様だと思う)
まあ、その辺まで使えるようになってると「なんで使えるか」に考えが及んで、どうやってコンパイラが機械語に変換してるかが気になったりするかもね。
コンパイラの1パス、2パスはプログラマにあんまり影響しない(待ち時間くらい?)けど、プリプロセッサの挙動は知っといたほうが良いかも。
でも、C特有かなあ。
]]>