プログラミング

シェルスクリプト高速化のツボ

これは備忘録。色々あって、まだ具体的なモノを何も作ってもないのにシェルスクリプトのパフォーマンス絡みでネタを収集してしまったので、ひとまずまとめてみた。shellshock(bashのアレ)があったばかりなので、ちっとばかり微妙かも。 計測してボトルネッ…

sed(1) VS printf(1) VS awk(1) リターンズ

id:eel3:20141011:1412954857 の続き。いや、CygwinではなくLinuxで計測してみただけですがな。Cygwinは少々特殊な環境だし、そもそもWindows上ではアンチウイルスソフトその他の影響でプロセス生成コストが高くなる。Unix環境でのプロセス生成コストとは大…

sed(1) VS printf(1) VS awk(1) 宿命の対決

テキストファイルに1行1個ずつ書かれているデータを、同じテンプレートを適用して出力したいのです。例えば、テキストファイルの中身がこんな感じだと仮定する。 1 2 3これを、こんな感じに変換する。 echo 1 ! echo 2 ! echo 3 !こんな風に、何らかのテンプ…

引数をとらない関数の仮引数にvoidを書くべきか、書かざるべきか?

本エントリ名のような質問にたいする回答をよく忘れてしまうので、ここにメモしておく。仮引数にvoidを書く/書かないについては、C言語とC++で言語仕様での扱いが異なる。C言語の場合は、関数の宣言か定義かによっても差異がある。この違いを表にするとこん…

Go言語のインターフェイスとポインタについての小実験

数ヶ月前、Qiitaにこんな投稿があったようだ。[教えて]Go言語:なぜインターフェイスはポインタにできない? - Qiita内容は元記事を読んでもらうとして、ちょっとスッキリしない点があった。具体的には: ありがとうございます! ・インターフェイスはポインタ…

なぜ私はコーディング時に括弧(`{'と`}')を省略しないのか?

括弧ネタ(括弧を必ず付けるのか、省略してもよいとみなすか)はそこそこ定期的に盛り上がるように思う。 http://anond.hatelabo.jp/20140812112634 http://boscono.hatenablog.com/entry/2014/08/14/102953 個人的には、括弧を省略可能な言語においては、明…

シェルスクリプトで末尾呼び出しの最適化

末尾呼び出しの最適化という最適化手法があって、これが有効な場合にスタックフレームの消費が抑えられる。具体的には、関数Aの末尾で関数Bを呼び出していて、関数Bの呼び出しについて末尾呼び出しの最適化が有効となった場合、関数B実行時に新たにスタック…

日本語版Squeakを任意のディレクトリから起動したい

日本語版Squeakという、SqueakをローカライズしたSmalltalkの処理系がある。何となく雰囲気的に開発者向けにリリースしている感じがするのだが、外野の私の気のせいかもしれない。起動用にバッチファイルとシェルスクリプトが用意されていて、環境に応じてこ…

今までどのくらいプログラミング言語を触ってきたか(3秒で挫折したものものも含む) Ver.6

2014/06/14現在のステータス。 id:eel3:20130615:1371228166 から1年経て、こうなっている。なおCSS、HTML、XMLは除外*1。 よく使っている AWK (Gawk) 単純なテキストレコードの処理にはAWKで十分。最近では、自作ツールをAWKやGawk単体で実装することは皆無…

祝! GitHubアカウント取得につき暫く蔵出しの予定

タイトルの通りGitHubのアカウントをとった訳です。 https://github.com/eel3/ ちなみに、あの画像は暫定版。一応、日本の国内法としての著作権法による保護の対象外なのだが……グレーゾーンっぽい気がする。自作の小ツールがいくつかあり、複数のPCで使って…

ヒマラヤ単独無酸素登山的オープンソース・コミュニティ活動

このエントリのタイトルは、本の虫の2013年10月〜11月のエントリからうかがいしれる諸々や、https://twitter.com/AntiBayesian/status/395501091443339264のやりとり(この一部分しか見ていないので、大いに誤解している可能性がある)を読んで感じたものを…

そろそろPowerShellについてひとこと言っておくか

端的に言おう。2014年4月こそPowerShellを猛プッシュするのに好都合な時期だったというのに、本日に至るまでどこも平常通りの運行なのはなぜだっ。もっと熱くなれよ!……ちょっと取り乱した。気を取り直して、解脱解説しよう。 2014年4月でWindows XPサポート…

Real World FizzBuzz

FizzBuzzプログラムは、プログラマを採用する時に全くコードを書けない人を足切りするために考案されたものだ。非常にシンプルで、汎用の高水準なプログラミング言語でコードを書ける人が慣れた言語を使えば、typoなどの細かいミスを除けば2〜3分程度で書け…

プロトタイプ宣言の仮引数にconst修飾子がなかった話

関数の仮引数(整数型)にて、プロトタイプ宣言にはconst修飾子がついておらず、関数本体にはconst修飾子がついていたとする。この状態でコンパイルしてリンクしてみたらどうなるだろうか? コンパイル/リンク時にエラーになるのか、警告が出るのか、スルー…

トヨタ カムリのETCSにはなぜグローバル変数が1万1000個あったのか、についての推測

http://eetimes.jp/ee/articles/1311/11/news072.html推測というよりも半ば妄想混じりであるという点を先に述べておく。そもそも私は車載関連の開発自体との縁が全くない。ただ、車載ではないがミッションクリティカルな組み込み開発(下手すると死人がでて…

tac(1)やtail -rの代替品 迷走編

LinuxというかGNU coreutilsにはtac(1)というコマンドがある。デフォルトではtac(1)はファイルを行番号の降順に(最終行から先頭行に向かって)表示する。 $ seq 1 10 1 2 3 4 5 6 7 8 9 10 $ seq 1 10 | tac 10 9 8 7 6 5 4 3 2 1 $ seq 1 10 >zzzz1.txt $ …

ソースコード中のコメントは多いほうがよいのか、少ないほうがよいのか?

会社の新人教育のような場では、課題のソースコードを提出するとまず「コメントを書け」と指摘されて、次に提出すると今度は「コメント多すぎ」と指摘されたりする。というか自分が教育担当だと、こういう新人からしたら理不尽に思われるだろう発言をしてし…

今までどのくらいプログラミング言語を触ってきたか(3秒で挫折したものものも含む) Ver.5

2013/06/15現在のステータス。id:eel3:20120612:1339429224 から1年経て、こうなっている。なおCSS、HTML、XMLは除外*1。 よく使っている AWK (Gawk) 単純なテキストレコードの処理にはAWKで十分。最近では、自作ツールをGawkのみで実装することは皆無だけど…

Windows PowerShellの罠――trap文概論

PowerShell 1.0の頃から例外処理用にtrap文が用意されていて、これがまた興味深い。trap文の元となったのは、おそらくBourne shellの系統のシェルに用意されている組み込みコマンドtrapだろう。『Windows PowerShellインアクション』1.2.1によれば、PowerShe…

『プログラミングClojure 第2版』にJava API呼び出し用の構文糖衣の項が無い? なのでメモ

積読のまま第2版を買ったので、現在手元にそれぞれ1冊ずつある状況なのだけど……。プログラミングClojure作者: Stuart Halloway,川合史朗出版社/メーカー: オーム社発売日: 2010/01/26メディア: 単行本(ソフトカバー)購入: 10人 クリック: 338回この商品を…

今までFizzBuzzを書いたプログラミング言語の数すら数えられない

今までいくつかの言語でFizzBuzzを書いてきた。その成果は id:eel3:19700104:1258419993 に一覧化してある。これ、現時点でどれくらいの数の言語で書いているかカウントしようとしたのだけど、どうにも正解が分からない。 C言語(ANSI C89) C++(多分C++98…

PHPの三項演算子が左結合という仕様は本当にバグなのか?

PHP言語仕様のバグ - れぷそる・ふぁいやぁ・ぶれぇど 一夜明けて… - れぷそる・ふぁいやぁ・ぶれぇど 本当に「言語仕様のバグ」なのだろうか?三項演算子が左結合であると、例えば次のような擬似コードにて意図しない挙動を示すだろう。 variable = expr1 ?…

抽象化について、もしくはニッポン構造化プログラミング未伝来説

http://d.hatena.ne.jp/shim0mura/20130117/1358436466なんというか、こういうのを見ていると「ニッポンのプログラマには構造化プログラミングや構造化設計すら未だに伝来していないのじゃぁ」とか思ってしまうわけです。 何か1つ関数を読む場合、その関数の…

Ubuntuを10.04から12.04にしたらfile(1)の出力内容が変わった

Ubuntu 10.04から12.04.1にアップグレードしたらfile(1)の出力内容が変わった。スクリプトファイルのテキストのエンコーディングを出力するようになったようだ。例えば10.04の頃の出力はこんな感じだった。 # Groovy 2.0.5付属の起動用シェルスクリプトで実…

変態的PowerShell書法入門 時代遅れひとりFizzBuzz祭り Windows PowerShell続編

2013年の年頭にあたり、プログラマらしくFizzBuzzをば。Windows PowerShellは強力な反面癖もある言語で*1、基礎文法に関しても強力だけど普段使うことが少ない機能がある。最近PowerShellでツールを作っていて、そんな「強力で面白いけど色々あって使わない…

MISRA-Cにおける「関数の末尾以外の return 禁止」の真意

MISRA C という失敗 (#2295472) | コーディング標準は役に立つのか | スラド 早期returnとMISRA-Cルール14.7は背反か否か. - TogetterMISRA-Cはそもそも、 どのルールを守り、どのルールから逸脱するのか検討し、決定する。 上記の決定内容とその理由(順守…

Windows XP (32bit) から Windows 7 64bitに移行するとツールが32bitやら64bitやら……

Windowsのバージョンアップに伴って諸々の作業が発生したのは「Windows 98 --> Windows 2000」の切り替え以来なのだけど、ツールやらドライバやら色々としがらみが増えた今回の方が大変な気がする。昔は身軽だった……。備忘録代わりに、Windows 7インストール…

シンプルで無駄なテキストファイルの読み込み方

シェルスクリプトで1行ずつテキストファイルを読み込む方法を、わざわざ頑張って考えてみた。で、思いついてしまった。ある意味画期的かもしれないけど、頑張る方向を間違えた気がしないでもない。 個々のコマンドはシンプルに、でもアルゴリズムは無駄だら…

スクリプトブロックは本当に親スコープの変数を書き換えられないのか?

PowerShellでは基本的に、親スコープの変数を参照することはできても、それを書き換えることはできない。この規則はスクリプトプロックにも適用されている。 $x = 1 2..5 | & {process{$x = $_}} $x # => 1このコードを実行すると「1」が表示される。スクリ…

test(1)でシンボリックリンクか否か判定する時のオプションは-hなのか-Lなのか?

test(1)を使ってあるファイルがシンボリックリンクか否か判定しようと思い、Linuxのjmanを見てみた。該当するオプションは-hと-Lのようだ。 -hと-L、どちらを使うべきかについてはjmanには書いてなかった。ということはどちらを使っても問題なさそうな気がす…