Makeプログラミング

そんなことじゃいけないよ。ここはむしろ、「使えるプログラミング言語は?」って聞かれたときに「sedとMakeとbrainf*ckです」って答えて面接に落ちるぐらいの気持ちでいかないと。


「お願いします!!Makeでqsortだって書きますから!!内定くださいッ」

#aux funcs
dec=$(shell expr $(1) - 1)
eq=$(shell if [ $(1) -eq $(2) ] ; then echo 1; fi)
gt=$(shell if [ $(1) -gt $(2) ] ; then echo 1; fi)
lt=$(shell if [ $(1) -lt $(2) ] ; then echo 1; fi)
le=$(shell if [ $(1) -le $(2) ] ; then echo 1; fi)
mul=$(shell expr $(1) '*' $(2))
sub=$(shell expr $(1) - $(2))
add=$(shell expr $(1) + $(2))


qsort=$(if $(call le,$(words $(1)),1),$(1), \
	$(call qsort, \
	       $(foreach i,$(1), \
		         $(if $(call lt,$(firstword $(1)),$(i)), \
	                      $(i),))) \
	$(firstword $(1)) \
	$(call qsort, \
	       $(foreach i,$(1), \
		         $(if $(call gt,$(firstword $(1)),$(i)), \
	                      $(i),)))) \

data=4810 1 3 4 2 5 9 10 490 390 3201

a=$(words )
all:
	@echo $(call qsort, $(data))

簡単な問題をわざわざ難しく解いて喜びを覚えるのは技術者が最もやってはいけないことのひとつだよ。


それはいいとして、Makeの関数はMakeの本来の機能である「更新日時を見てコンパイルするかどうか決める」という部分に影響を与えられないので、微妙に使い方がわからないような。
マゾプログラミングで遊ぶにしても、シェルが非常に簡単呼び出せて、どうにでもできてしまうので、いまいち感動が薄い。シェルに頼らないと基本的な機能が足りないのも辛い。標準入力から読むのにシェルが必要なので、シェルを呼ぶしかないんだけど、シェル使ってしまったら、つまらんというか、なんの話をしてるんだ。