プログラミング

そろそろ「美しいコード」って言うの止めようぜ

――と題名の通りの感想を抱いたのだが、「美しいコード」の代替となる上手い言い方が思い浮かばないのである。 コードが美しくないために起きる問題を考える(前編)―重複のあるコード/誤読問題 (1/2):EnterpriseZine(エンタープライズジン) いや、記事の…

ALSAでMIDIをループバックさせたい――ただしALSA RawMidi APIで!

ALSA C libraryのAPIを使用してMIDIの入出力を行うLinuxアプリがあるのだが、出力したMIDIをループバックさせて入力として読み込みたい――という話である。macOSなら標準のIACドライバを、Windowsならサードパーティの仮想MIDIケーブル*1を使うパターンである…

低速で無駄のある小規模ツール開発を実現する方法

「低速で無駄のある」はツール本体なのか開発手法なのか、はたまた保守フェーズか。 例1:外部コマンドを何度も実行するシェルスクリプト/バッチファイルとして実装する シェルスクリプトもバッチファイルも個人的に愛憎相半ばする気持ちを抱いてしまう言語…

分野に関係なく『組込みソフトウェア開発のための構造化プログラミング』を読んでおかなきゃあかん

『組込みソフトウェア開発のための構造化プログラミング』を軽く読んだのだが、この本は組込み系以外の分野でコードを書いている人も読むべきだ。組込みソフトウェア開発のための構造化プログラミング (組込みエンジニア教科書)作者: SESSAME WG2出版社/メー…

優秀なエンジニアは勉強しない

もう1ヶ月経つから、そろそろ書いてもよいだろう。 エンジニアは業務時間外でも勉強するべきなのか 個人的な好悪より「エンジニア」ではなく「プログラマ」と記述するが、元来プログラマは勉強などしないものだ。プログラマの三大美徳を思い出すこと。プログ…

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

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

複数のプログラミング言語を学ぶ理由

プログラマが複数のプログラミング言語に手を出す理由を考えるには、まず、プログラマの視点ではプログラミング言語がその役割によって4種類に分類されることを理解する必要がある。 「システムの構成要素」系 作りたいものを実装するのに必要不可欠なプログ…

Swiftは静的型付け言語界のJavaScriptである

ここ最近AppleのSwiftを触っていて感じた個人的な感想だが、Swiftは今のところ「静的型付け言語界のJavaScript」に最も近い位置にいると思う。JavaScriptは、第一級関数やクロージャがお仕事でよく使われるメジャーな言語に既定で組み込まれたという点で、あ…

いかにしてJavaScriptを学んだか

まあ、気持ちは分からないでもないっすよ。いかにしてJavaScriptを教えるか - mizchi's blogロートルの無駄話程度に思ってほしいのだが、私は、自身の経験より「Node.jsから」という案は賛成だ。一方で、おそらく先の文章を書いた人はフロントエンド回りに詳…

即席プログラマー養成読本 α版

やあ、ようこそ職業プログラマの世界へ!この文書は、何の準備もなくコの業界に飛び込んでしまった文系プログラマ(候補)や、将来的にコの業界に就職するかもしれないし就職する気もあるけど基礎が足りてないと自覚している学生に、比較的短期間で商品知識…

Python高速学習 経験者編

最近少しだけPythonに触れているのだが、他言語でそれなりにプログラミング経験がある人がPythonを学ぶ場合、差し当たり次の3つのドキュメントがあれば割と短期間でなんとなくPythonっぽいコードを書けるようになるみたいだ。 Top - python.jpで公開されてい…

プログラミング初心者向けに「環境構築の容易さ」をアピールしてはいけない

一言述べておかなければ。「最初に学ぶべきプログラミング言語」 - mizchi's blogプログラミング言語の「売り」として、プログラミング初心者向けに「環境構築の容易さ」をアピールするのは止めた方がよい。だって、それをするなら、WindowsユーザにはPowerS…

正しいフローチャートの書き方

1月以上経っているから、もう書いてもよいかな。若手プログラマー保存版!フローチャート徹底解説と作成カンニングペーパーこれは、日本ではあまり知られていないことなのだが、普段私たちがプログラミング教育で目にするフローチャートや、または「フローチ…

シェルスクリプトを本気で学びたい人のための10冊

シェルスクリプトについて、プログラミング言語の一種としてガッツリ学んだうえで、しかし得手不得手を見極めて、無理せずシェルスクリプトらしい使い方にとどめて日々を過ごしたい人のための10冊を選出すると、だいたいこんな感じとなる。前提として「他の…

量産型プログラマとそれ以外のプログラマの違いはどこにあるか?

ふむ。量産型プログラマを撲滅したい – Yoshihito Kuranuki – Medium最近、量産型プログラマに遭遇したのだが、彼らを観察しているうちに、量産型プログラマとそれ以外のプログラマとでは、次の点に違いが見られることに気づいた。 ソースコード・ドキュメン…

ppbinについての覚え書き

昨年末にppbinというツールを作ったので、メモを残しておく。GitHub - eel3/ppbin: Pretty-printer for binary file ppbinとは何か? ppbinは、指定した形式でバイナリファイルの16進数ダンプを吐き出すコマンドライン・アプリだ。 $ # test.binは44 byteの…

シェルスクリプトに向いている用途

シェルスクリプトに向いている用途は、大抵の場合、以下の要件を1つ以上満たしているものだ。 作りたいものが単機能で、あまり複雑ではない。 非対話的な処理である。 既存のコマンドの羅列/組み合わせで容易に解決できる内容である。 他の言語でいう「メソ…

PythonのwaveモジュールでのPCMデータ読み出しを高速化する

RIFF WAVEファイルからリニアPCMのデータを取り出して、フレーム毎に(正確には各フレーム内のサンプル毎に)加工して出力するツールを作った。諸事情によりPython 2.xの標準ライブラリのwaveモジュールを使ったのだが、Wave_readオブジェクトの扱い方によっ…

正規表現を使ったテキストフィルタとC/C++による自作ツールではどちらが高速か?

改行区切りのテキストレコードを舐めて、特定の形式に当てはまるものを除外するツールが欲しくなった。形式の判定には正規表現が使えそうだった。Unix環境で動かすなら、既存のテキストフィルタを使えばよい。だが残念なことに動作環境はWindowsで、しかもス…

あえてbc(1)した話

たぶんまだまだ初級な小ネタ。こんな感じに16進数(プレフィックスなし)のデータが並んでいるテキストファイルtest.datがあって: 00000000 00000001 0000000F 00000010 7FFFFFFF 80000000 FFFFFFFE FFFFFFFFこれを元データ(32bit符号なし整数)としてちょ…

cat(1)しない話

初級小ネタ。例えばgrep(1)する際に、こんな感じのサンプルコードが示されることがある。 cat file.txt | grep foo しかし個人的には次のほうが好みだ。 grep foo file.txt せっかく引数でファイルを指定できるのだから、そちらを使いたい気分になるのだ。tr…

grep(1)しない話

もう1つ、初級小ネタ。DebianやUbuntuで、あるパッケージがインストールされているか否か調べるのに、今までdpkg(1)とgrep(1)を組み合わせていた。 dpkg -l | grep acpi ところで先日、dpkg(1)のmanを見たところ: -l, --list package-name-pattern... 「pac…

プログラミング言語の剰余演算子に惑う

いくつかのプログラミング言語を見ていると、算術演算子のうち四則演算の記号は、大抵の言語で同じだ。 演算 記号 加算 + 減算 - 乗算 * 除算 / 上記の記号は、COBOLのCOMPUTE文でも通用する。その一方、剰余演算子あたりから若干怪しくなってくる。私の普段…

Swift 2.2.1から3.0に更新したらSegmentation faultが多発するようになった話

Ubuntu 14.04.5にAppleのSwiftを入れて遊ぼうとしていたのだが、Swift 2.2.1から3.0に差し掛かえたらSegmentation faultが多発するようになった。 $ swift Welcome to Swift version 3.0 (swift-3.0-RELEASE). Type :help for assistance. 1> 1 + 3 Segmenta…

プログラマと予習 事前学習はどの程度必要か?

ちょっと前の記事で、もう下火になっているから、言及してもいいか。 仕事が出来る人の勉強法 優秀なプログラマに学ぶ、効率のいい勉強の仕方 - ケーススタディの人生 少なくとも、上記の記事では「プログラミング」を念頭に議論しているようだ。なのでこち…

プログラミングでのコピペの作法

プログラミングでコピペというと、次の2通りの解釈が成立するが: ソースコード中で、似たような処理を1つにまとめずに、コピペして量産していくこと。 やりたいことに近いサンプルコードやスニペットをネットで探して、コピペして利用すること。 ――この記事…

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

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

ブライアン・カーニハンは写経したか?

ちょっと前の記事だけと、少し気になったので書いておく。 誰もが知ってるけど敢えて言わない確実に身につくプログラミング学習法 - WirelessWire News(ワイヤレスワイヤーニュース) 要約するのが面倒なので、内容については上記記事を参照してもらうとし…

誰も正しいコメントの書き方を知らない

「コメントの書き方」にもある種の理論・思想があり、理論・思想にもとづく「型」があると思っているのだが、「『コメントの書き方』についてそこまで突っ込んだ理解をしている人は驚くほど少ない」と考えておいたほうが無難だろう。Code Kataは既出だが、Co…

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

id:eel3:20121117:1353150478 の続き、だろうか? あれから3年ちょっと経つが、test(1)でファイルがシンボリックリンクか否か判定する時に-hと-Lのどちらを使うべきか、未だに迷い続けている。「どちらでもよい」と言われるとかえって迷ってしまう、難儀な性…