正式名称“Compiler”。 アフタヌーンにて連載されていた、麻宮騎亜の漫画。 宇宙から落ちてきた女性たちが騒動を起こし続ける、SFギャグ漫画。 キャラクターが二頭身になったり、麻雀バトル繰り広げたり、やりたいほーだい。 さりげなくOVA化もされている。 主人公を変更した「Assembler 0X」という続編なんぞもある。
コンパイラ (1) (講談社漫画文庫)
Compiler 陰の章&陽の章&Festa&Music clips In Trackdown [DVD]
【compiler】コンパイルを行うソフトウェア。
はじめに string と byte のキャスト最適化 1. map のキー指定のためのキャスト 2. string を byte 毎に処理するためのキャスト 3. 比較のためのキャスト memclr による配列ゼロクリア最適化 ガベージコレクションのマークスキャン回避 おわりに 参考文献 はじめに SRE の izzii (𝕏: @ahneahneahne) です。今回をもって「Go コンパイラのお勉強」と題した連載ブログが完結です!仕事の話とは直接関係がないネタだったので、書く内容に悩むということはなく気持ちよくかけました。さて、今回は「配列の効率的な利用」と題して golang/go C…
はじめに インライン展開 インライン展開とは 高階関数のパフォーマンスが落ちる例 インライン展開の制約 エスケープ解析 エスケープ解析とは 高階関数のパフォーマンスが落ちる例 さいごに 参考文献 はじめに 先々月にも Go コンパイラの最適化に関するブログ記事を書いたのですが、多くのブックマークを頂けて感謝です! SRE の izzii です。 github.com 上のドキュメントを参考にしつつ Go コンパイラの最適化に関する記事を連載していきます。本記事は 2 本目です。 [第 1 回] Goコンパイラのお勉強(1)~ゼロ幅の型によるメモリ利用の最適化と未定義動作~ [本記事] Goコン…
はじめに メモリアロケーションの回避 ゼロ幅の型(=ゼロサイズの型)とは アドレスの同一性に関する未定義動作 この最適化が有効な場面 1. map 2. chan 3. interface の実装 おわりに 参考文献 はじめに こんにちは。SRE の izzii です。 最近は某フィットネスゲームが習慣だったり、ボルダリングを再開したり、登山シーズンが到来したりと心身ともに調子が良いです。 さてつい先日、Go のコンパイラによる最適化について勉強したまとめを社内で共有したところ、メンバーが面白がってくれたため、細かいところを自分の手で触ってみたり、Go Forum で質問を投稿したりした上で記…
Qiita に書きました。 qiita.com
かんたんな自作言語のコンパイラをいろんな言語で書いてみるシリーズ 24番目の言語は V(V言語、vlang) です。 V を触り始めて1週間くらいの人が、理解は後回しにしてとにかく動くものを作るぞ、という方向性で書いたもの(そのくらいのノリで気軽に書けるコンパイラです)。 V のバージョンは 0.3.3(weekly.2023.14)。 できたもの github.com 動かし方の例 $ echo ' func add(a, b) { return a + b; } func main() { call add(1, 2); } ' | bin/mrcl_lexer | bin/mrcl_pa…
※初歩的な勘違いをしていたのでメモ 次のコードは動かない といってもリンクができないだけで分割コンパイルはできる(できてしまう) #pragma once namespace Hoge{ typedef float hoge; hoge setHoge(); void getHoge(hoge value); }; #include <iostream> #include "hoge.hpp" using namespace std; using namespace Hoge; hoge setHoge(){ return ((hoge)10); } void getHoge(hoge val…
インライン展開 関数の呼び出しは呼び出し時と戻り時のジャンプでコストがかかる。基本的にコンパイラーは前後の文脈からある程度最適化してくれる。C#にはないが、.NETでは属性を指定することでインライン展開を指定できる。 [MethodImpl(enum MethodImplOptions) void Somethind(){}
作詞:有森聡美 作曲:大平勉 編曲:大平勉歌:Drink みんなで歩き出そう 夢 膨らむ未来へと 今すぐにも くじけそうな時も 一人じゃないからきっと がんばれるよ キラキラの夢を 持ち寄って集まろう ジグソーパズルより ゴールときめくはずさ Let's doing 一人より二人 (もっと もっと 膨らませて) Let's doing 二人よりみんな (もっと もっと 大きな夢) 信じるハートがパワーだね どんな着飾っても 夢に夢中の時には かなわないね すごく大人びたり とても綺麗に見えるの 不思議なほど それは その胸に輝く ダイヤモンド そう、その夢達が 光り続けているから Let's …
さて、PascalScriptを御存じでしょうか? 検索しても日本語ページはほぼない状態ですな。 これはPascal言語なScript言語(インタープリタ)を Delphi,Lazarusで動かすものです。 Pascal言語の中でPascal言語のインタープリタを 動かして何がうれしいのか? というところが使う動機なんですが、InnoSetupが有名だそうです。 たしかにあればPascal言語をScript中に書けますね。 サービスの起動なんかを書いたことがあります。 これは何に使うかというと、コンパイラですとソースが ないと見れませんが、Pascal Scriptをテキストファイルで 持って…
Mac OS 13 のスリープまでの時間 Mac OS 13.6.6 にリモートで接続したかったので画面をロックしておいたところ、本体もスリープしてしまったのか、接続できなかった。ネットワークには、外部ディスプレイ(Dell P2723QE)についている ethernet ポートで接続している。ロックしたことで画面がスタンバイモードに入るとネットワークも落ちるのかと思って調べたが、そうではなさそう。ということは、画面ロック後しばらくすると本体がスリープするということのようだが、そのタイマーをどこで設定するのかが分からない。昔は Energy Saver とか Battery の詳細設定からスリ…
多機能な、プログラミングを書く場所のこと IDE は、プログラミングに関連する様々な機能を一つのアプリケーションに統合したものです。 Pythonを使用したりDjangoでの開発であれば、個人的にPyCharmやVSCoadがまずはおすすめです。特にPyCharmは、利用料こそやや高くて法人などでの使用が多い印象ですが、Python 環境としては申し分ないので興味を持ったらぜひ使用してみてください。基本的にはPyCharm、案件先で制約があればVSCoadというように使い分けています。PyCharmはPythonの開発者アンケートでは利用率1位のIDEで、とても使いやすいです。 以下に、IDE…
初投稿です。 「学んだことはブログなどに書き込んでアウトプットすると良い」 らしいので試してみます。 今回は、C言語のポインタについて学んだことをメモ兼アウトプットします。 学ぶのに使った本は「C言語ポインタ完全制覇(ISBN978-4-7741-9381-6)」 という本です。 新・標準プログラマーズライブラリ C言語 ポインタ完全制覇 作者:前橋 和弥 技術評論社 Amazon 今回は第一章の内容をメモしていきます。 ポインタ型とは 例えば「int型」や「double型」が存在するが、それらから派生して作り出される型。 ポインタ型にさせるためには、型に「*」を付け加える。 そうすることで「…
github.com Assignment 1 現状の実装にbyteカウンタの機能を追加するというもの。 解いてみる xdp_stats_mapのエントリの構造体にbyteカウンタのフィールドを追加する eBPFマップは以下のように定義されている。 struct { __uint(type, BPF_MAP_TYPE_ARRAY); __type(key, __u32); __type(value, struct datarec); __uint(max_entries, XDP_ACTION_MAX); } xdp_stats_map SEC(".maps"); エントリの構造体であるdat…
初期化せずに初期化する。一見矛盾しているようにしか思えない行いはしかし、生配列の場合は次のように初期化しながら初期化しないことによって行うことができます int main() { int array_uninit[5]; // 各要素は未初期化 int array_zeroinit[5]{}; // 各要素は0で初期化 } この時std::arrayで同様に初期化しながら初期化しないことを行うにはどうすればいいのでしょうか?クラス型の場合、初期化をしない初期化(デフォルト初期化)の場合でもデフォルトコンストラクタが呼ばれてしまうため、なんとなくできないような気がしてしまいます。 先に結論を書い…
高校まで進んでから文理の別を考えるとき俺は文系寄りだったが親父の言で理系選択、結果破れてフリーターしてから専門学校に進む。コンピュータの専門学校を出てソフトウェアと言うと理系と考えられていた時代に森博嗣の理系ミステリを読んで理系力を高めたが、ゲームに没頭していたのがカプエス2の公式全国終了でその時に最後の2D格闘の大会と言われ、一回終わって落ち着いて、仕事が選べないのを勉強が足りないからだと解釈して本を読んでいた。 だからまあ、文理の別というと工業過程専門士であって文系でも理系でも無いわけだが、周囲が理系人ばかりで影響は色濃かった。ただ、最初に書いたように俺は高校で受験の時に文系を選択しようと…
コンピューターのプログラミングでは、プログラムを実行できる形式に変換する処理をコンパイルと呼びます。コンパイルには以下のような特徴があります。 プログラムソースコードからオブジェクトコードの生成プログラミング言語で書かれたソースコードは、コンピューターが直接理解できる機械語に変換される必要があります。コンパイルは、ソースコードを分析し、機械語に対応するオブジェクトコードを生成する処理です。 中間言語の生成高レベルな言語で記述されたプログラムは、一度その言語の中間言語に変換されることがあります。中間言語は、ソースコードと機械語の中間的な形式で、コンパイラの最適化や仮想マシンによる実行に利用されま…
kotlinx.seriarization便利ですね。KotlinのデータクラスをJSONで読み書きする場合だけでなく、CSVで読み書きする際にも使えるようです。 ただし、ヘッダを自動的に入出力する機能は無いようです。 データをCSVの行にあたる文字列に変換する際にserializationライブラリを用いて、後は、Kotlinでファイルを読み書きする標準的な方法を用います。 読み込みの際に登場する、useLinesによる遅延読み込み処理の手法は知らなかったです。ヘッダ行を飛ばす処理で登場しますが、覚えて置きたいです。 KotlinでCSVファイルの読み書きをしたいのですが、定番のライブラリが…
IntelliJを入れたほうが快適だと思うが、VSCodeを使えという指示なので試してみる。 コンパイラをいれる https://kotlinlang.org/docs/command-line.html#install-the-compiler Githubよりkotlin-compiler-1.9.23.zipをダウンロードする。 システム環境変数path コンパイラをおいた場所を環境変数pathに追加する。C:\kotlinc\binhttps://kino-code.com/course-kotlin03-environment-for-windows/#toc5 CodeRunner…
かんたんな自作言語のコンパイラをいろんな言語で書いてみるシリーズ 28番目の言語は Scala です。 できたもの github.com 不慣れな人が見様見真似で書いていますので、Scala のコードとして拙いところはご容赦ください。 Scala に詳しくなるのは後回しにしてとにかく動くものを作るぞ、という方向性です。 サイズ ( cd src/main/scala/mini_ruccola LANG=C wc -l *.scala lib/*.scala ) 358 CodeGenerator.scala 67 Lexer.scala 25 Main.scala 302 Parser.sca…
マスターズ参加してました。とりあえず酔ってる勢いでもろもろと。 とにかく反省点がめちゃくちゃ多かったけどとっても楽しかったです。まあ、あめんばーさんは14歳(N進数)なんですけどね(Nは[5,1e18])例によって私のブログは誰かのために書くというよりは後への自分のかきなぐりです。(コレ毎回言ってる気がする)
背景 llvm.org これを読んでいて名前が出てきた.(チュートリアルを進めるうえではいらないが..)Gofも流し見を数年前にしたきり,詳細を知らないので良い機会なので学ぶ gof(ギャングオブフォー) デザインパターン23種. ja.wikipedia.org Visitor Visitor パターンは、オブジェクト指向プログラミング およびソフトウェア工学 において、 アルゴリズムをオブジェクトの構造から分離するためのデザインパターンである。分離による実用的な結果として、既存のオブジェクトに対する新たな操作を構造を変更せずに追加することができる。 by wikipedia 使い所 Vis…
=プログラミングのコードのこと ソースコードは、コンピューターが直接理解できる形式ではなく、人間が読み書きできる形式で記述されたプログラムの指示です。 ソースコードは、プログラミング言語を用いて書かれます。プログラミング言語には、C、Java、Python、Ruby、JavaScript など、さまざまな種類があります。それぞれのプログラミング言語には独自の文法や構文があり、それに従ってソースコードが記述されます。 ソースコードは、プログラムの機能や動作を定義するものです。変数の宣言、演算の実行、条件分岐、繰り返し処理など、プログラムの基本的な構造がソースコードに書かれています。これらの命令が…
所有権をわかったつもりだったが、わかってなかった。*1Rust By ExapmpleのPipesの章で、以下のコメントにあるstdinがdropされると記述が信じられなかった。 match process.stdin.unwrap().write_all(PANGRAM.as_bytes()) { Err(why) => panic!("couldn't write to wc stdin: {}", why), Ok(_) => println!("sent pangram to wc"), } // Because `stdin` does not live after the abov…