「awk」を含む日記 RSS

はてなキーワード: awkとは

2018-01-14

IT業界某国スパイ巣窟

IT業界日本社会の縮図となっているんだよ - こうして僕らは腐る

http://www.byosoku100.com/entry/2018/01/13/212749

ITを学んでIT企業就職して、この国のIT企業はきっとCIAか何かによって弱体化を図られたとしか考えられないと思いました。

自分ロジック組んだり、アルゴリズムを考えたりする仕事をさせてくれている会社もありますが、会社の規模がでかくなればなるほどそういう仕事下流に任せる感が強い。まずこの構造が弱体化の出発点。

多重下請構造は、製造業日本ならではの伝統下流低賃金が根強い。背広を着た人がその伝統文化を売り捌く。文化が短納期、安請け合いを生み、短納期、安請け合いにより、品質が下がり、雇用も安く済まされ、弱いSEしかまらず、国際競争力はなくなる。この下請け構造文化を持ち込んだのは、他ならぬ製造業文化を固持してきたメーカーベンダーのように思えますメーカーベンダーCIAからなんだかのスパイ行為に加担したのでしょうか?

実はそんなメーカーベンダーにもいたのですが、ぽっと出の強いSEもいます。ところが強さが仇となり、全容を把握している神扱いで一段上に据えられます。そして多忙を極め、ロジックアルゴリズムをひねり出す知的生産力は、仕様書指示書と呼ばれるエクセル方眼紙に図形や文書を書き殴る作業力へと変貌します。

指示は全て自社フォーマット図面に書け!その図面審査承認課長に貰え!え?予算の都合、本部承認必要本部長いつ来るの?1週間後だって!?リスケだ!工数再見積もりだー…これは仕事ですか?それとも茶番ですか?こうして強いSEは弱体化します。強いSEほど自分の置かれた立場環境に順応しようとする意識が強く、仕事ができる人間になるためにはお上に楯突かず、弱体化を受け入れようと考えます

エクセルのvlookupを使うために、学生時代関数型言語を学んだわけじゃないのに…と就職して思うようになったunix文化を学んだ強いSEが、思考停止している情シスによって管理しきれないものは全てセキュリティホールみたいな会社にいたら、「あいつはセキュリティを脅かす不良社員」のレッテルを貼られ、朝から晩までvlookup,vlookup...(いやそのエクセル脆弱性情報パッチ出ているけど、いやお上のお達しを待て!的な茶番劇)せめてgrep,awk,sedくらい使わせてやれって、残業がなくなってボス最近社長の思いつきで始めた健康経営者として表彰されるかもしれんよ?思いつきだから明日あるか分からんけど…。いつまでこんな寸劇をやればいいのやら。学んだことは活かせません。茶番寸劇の中心にはやはりこの国のIT業界を弱体化させ国際競争力を低下させるスパイが潜んでいるとしかおもえません。

ここで、IT業界蔓延日本国際競争力をいちぢるしく低下させているスパイの特徴を述べておきます

・安請け合いをする無能な人

スパイ目的である国際競争力の低下にダイレクトアプローチするスパイ中のスパイです。こいつがいたら即辞めないと国や社会のためにも良くないです。

・「よく分からないものセキュリティの都合使えません」と思考停止している人

お前はそのツールコミッターでそのツール脆弱性を分かってそんな事を言っているのか?と、せめて同僚がツール有用性を知りつつ使いたいっていうならそれなりのセキュリティ的可用性を示すのが情シス仕事じゃねーのかと?まぁこ場合スパイなのでそんな調査は死んでもやりませんが…

・「ツール使用効率化ではなくズルだ!」と言い続ける人。

スパイの常套プロパガンダです。明らかにおかし言動なのでスパイの中では未熟者なのかもしれません。

・「大学で学んだことが社会では通用しない」と偉ぶる人

そのままで通用しないけど、出発点であるべき。でなければその空白を埋めるコストをどうしろと?そんな言葉マジで吐く人間は出発点にすら立たせて貰えていない場合が多い。ただ言葉を吐くスパイは、スパイが故に企業内の立場は上のほうにいるかもしれません。出発点に立っていなかろうが

法律無視する人

よく考えてみてください。遵法精神のあるスパイがいると思いますか?そもそもこのスパイ蔓延構造日本社会根深く浸透しているので、法律を取り締まる側もうまく騙されていると考える方が自然です。労基法下請法派遣法…機能しないのも当然です。

2017-04-15

http://anond.hatelabo.jp/20170415170545

動的型の言語流行ったのは、Webプログラミングの隆盛のおかげだろ。

大昔にテキスト処理のawkがあって、その発展版みたいなPerlが現れて、タイミングよくWebプログラミングの波がきて需要が拡大。

でもPerlは、awkの発展版だから、数値も文字列も全部文字列っていう設計思想

変数に型がない以前に、値に型がない。

で、そのPerlの影響を受けたRubyPHPがはやってしまって、動的型の言語の隆盛の時代に。

間違った世界線に入ってしまった。

 

一連のスクリプト言語の特徴は表記が簡略だってことだけど、これは型が動的か静的かというのは関係ない。

でも動的型派は、それが動的型の特徴だと思い込んで「動的型サイコー」みたいに言い出した。

10年くらい前にはハテナでも「Javaで書いたら50行のこの処理が、Rubyで書いたらたったの10行。Javaだせえ!」みたいなブログ流行った。

 

でも、静的型の言語も、今では記述の簡略化が進んで動的型のスクリプト系の言語メリットは薄れてる。

いまさら動的型でやるメリットはない。

2016-10-10

bashでやり始めたけど、いろいろ外部プログラムとの連携を考えるとpythonでやればよかったと思っている。

bashよりRのほうがまだましだったかもしれない。

bash変数文字列しか入らないことがめんどくさい。

awkが強力なのはわかったし、ディレクトリファイルの移動や検索、展開等は簡単だけど、

結局関数を作ったりするのには向かない

2016-07-18

Vimフィルタコマンドで使うUNIXコマンド

http://vim-jp.org/vimdoc-ja/change.html#filter

Vimにはフィルタコマンドといって、テキスト任意UNIXコマンドで処理するExコマンドが用意されている。

用意されていて、実際強力なんだけど、Vim組み込み機能で間に合うことも多くて、下記以外はあまり使っていない気がする。

以前はVim正規表現に慣れないからとPerlを使ってたりもしたけれど、Vim正規表現も悪くないかなとなって。こう。

何かおすすめUNIXコマンドがあったら教えてください。

bc

簡単計算をするときに使う。1行に計算式を書いて「:.!bc<CR>」あるいは「!!bc<CR>」とすると計算ができる。

(小数を扱いたいときは-lオプション指定する)

「<C-r>=」で代用できる。

sh

長めのコマンドを実行するときに使う。「:%!sh<CR>」とすると書いたシェルスクリプトを実行できる。

最近Bashの<C-x><C-e>で良い気がしてる。こちらだとヒストリで戻って<C-x><C-e>として再編集することもできるので。

column

簡単な整列をするのに使う。ビジュアルモード選択して「!column -t<CR>」とすると整列ができる。

(デフォルトのセパレータがスペース二つなので、一つにしたければ-oオプション指定して「!column -to' '<CR>」という風にする)

vim-easy-alignやvim-aligntaが入っているならそれでいいかも。

jq, xmllint, pup

それぞれJSONXMLHTMLを整形するのに使う。JSONは「:%!jq .<CR>」、XMLは「:%!xmllint --format -<CR>」、HTMLは「:%!pup<CR>」。

ただ「jq . <JSONファイル> | vim -」としていたりして、直接Vimの中で使ってない場合が多いかも。

awk

連番を振る時、重複行を削除する時、指定した列を抜き出す時、などなど、色々なことに使える。

それぞれ「:%!awk '{printf"\%-6d \%s\n",NR,$0}'<CR>」、「:%!awk '\!a[$0]++'<CR>」、「:%!awk '{print$2}'<CR>」といった風にする。

tee

保存するために管理者権限必要場合sudoと一緒に使う。「:%!sudo tee %<CR>」とすると保存できる。

編集中のテキストを何処かに残すため……と思ったけど:wで事足りる。

2016-07-01

【決定版】プログラミング言語を徹底解説!



http://cpg.hatenablog.com/entry/2016/06/30/193755

【決定版】プログラミング言語を徹底解説!

プログラミング言語は、200種類以上存在していると言われていますが、その亜種や野良プログラミング言語を含めれば、星の数ほどあります。たとえば今回紹介しませんが、ベーシックという言語だけでも、ファミリーベーシックプチコン3DSベーシック)、べーしっ君などがあります

今回はその中から厳選に厳選を重ねて厳選した、プログラミング言語を5つ、徹底解説します。

では早速解説していきます!!!

1.Perl

Perl歴史的に古く、sedawkといった歴史として語られる以前のプログラミング言語のいいとこどりをした、とても、素晴らしい言語だ。

モンスト以前のmixiや、みんな大好きはてブはてなブログは、Perlで作られています

学習する際は、歴史が古い分、Perl4の本も、たまに図書館に残っているため、気を付けなければなりません。

2.Perl

よく勘違いされるのが、「PerlPearlって似てるんでしょ?」。違います

何が違うかといいますと、文法から用途までほぼ全てが違います

Pearlとは?

Pearlとは真珠のことだ。あと、バンドメンにとっては楽器。それと、譲れない願いかPEARLCDを買った人も、いるんではないでしょうか。

Perlは?

PerlはAndoridにも、対応してたりします。

https://www.infoq.com/jp/news/2014/06/perl520

3.Perl

Webサービスを開発したい場合、真っ先にお勧めしたいのがPerlだ。

Perlの特徴として、[[TMTOWTDI]]があります。あとPerlを生み出したLarryは、プログラマの3台美徳として、 "Laziness, Impatience and Hubris"というすばらしい考え方があります

https://en.wikiquote.org/wiki/Talk:Larry_Wall

4.Perl

皆さんはAIをご存知ですか?

PerlAI(Artificial Intelligence)でググッテても、わかるように、2000年台前半からすでに話題に上がっており、最近流行ディープラニングでも、Perl6を使った話があるようだ。

http://ai.neocities.org/P6AI_FAQ.html

5.Perl

iPhoneで動くPerlもありますアプリあります

https://itunes.apple.com/jp/app/perl-programming-language/id486217730

だんだん書くのが疲れてまいりました。

http://blogs.perl.org/users/lestrrat/2013/09/perlmotion-perl-for-ios.html

あとはlestrratさんにおまかせします。

それとYAPCは去年で一区切りしましたが今年も、YAP(achimon)C::Asia Hachioji 2016 mid in Shinagawa あります!!!!!!

http://yapcasia8oji-2016mid.hachiojipm.org/

2016-05-13

awkを使って合計平均分散偏差を計算する

#!/usr/local/bin/awk -f

BEGIN{

   print "sum", "ave", "var", "std"

   sum=0;

   count=0;

   var=0;

}

{

 if(($1 !~ "#")&amp;&amp;($1 !~ "@")){

    sum+=$2

    var+=$2*$2

    count++

};

}

END{

   ave=sum/count;

   var/=count;

   var-=ave*ave;

   std=sqrt(var);

   print sum, ave, var, std;

}

2016-03-31

http://anond.hatelabo.jp/20160331101136

うーん、さすがに今回の話はLinuxユーザースペースをWindowsに載せるって話だから

逆は難しいように思うけどね。

しろgrepとかawksedみたいなツールWindows移植やリコンパイルじゃなくて

そのままのバイナリが動くってのがキモだよね。

この辺のツール使いたくてMac選んだユーザーは端末の選択肢広がって良いと思う。

2015-08-19

http://anond.hatelabo.jp/20150818233553

Perl 以降の LL しか使えない人は多いですね。

最近sed / AWK で足りてても、他人が読めるように Ruby で書いてばっかりですorz

http://anond.hatelabo.jp/20150818233553

Perl 以降の LL しか使えない人は多いですね。

最近sed / AWK で足りてても、他人が読めるように Ruby で書いてばっかりですorz

2015-08-18

http://anond.hatelabo.jp/20150818231612

間違ってるのが何か分かってないんだからそこは「cat -n | grep 肛問」じゃなくて「awk '!a[$0]++{print$0,NR}'」としようよ……。

あと「sed 's/../&\n/g'」でいいものperlでやらんでも。

(「grep -vn 肛門」というのもありか……)

2014-10-18

http://anond.hatelabo.jp/20141018070809

サンクス

おれんちのbash大丈夫だった

$ wget http://www.redtubelive.com/ -O - 2>/dev/null | awk -F'"'  '{ if ( $4 ~ /http:\/\/www.redtubelive.com\/cam\/[A-z0-9]*\//) print $4 }' | sort -u | sed -e 's|^|open |g' | head -n 15 | bash
Couldn't get a file descriptor referring to the console
Couldn't get a file descriptor referring to the console
Couldn't get a file descriptor referring to the console
Couldn't get a file descriptor referring to the console
Couldn't get a file descriptor referring to the console
Couldn't get a file descriptor referring to the console
Couldn't get a file descriptor referring to the console
Couldn't get a file descriptor referring to the console
Couldn't get a file descriptor referring to the console
Couldn't get a file descriptor referring to the console
Couldn't get a file descriptor referring to the console
Couldn't get a file descriptor referring to the console
Couldn't get a file descriptor referring to the console
Couldn't get a file descriptor referring to the console
Couldn't get a file descriptor referring to the console

 

$ wget http://www.redtubelive.com/ -O - 2>/dev/null | awk -F'"'  '{ if ( $4 ~ /http:\/\/www.redtubelive.com\/cam\/[A-z0-9]*\//) print $4 }' | sort -u | sed -e 's|^|open |g' | head -n 15
open http://www.redtubelive.com/cam/AlexiLynn/
open http://www.redtubelive.com/cam/AliceX/
open http://www.redtubelive.com/cam/Aliza_Love/
open http://www.redtubelive.com/cam/AnnaMariaXO/
open http://www.redtubelive.com/cam/Ashley_Haze/
open http://www.redtubelive.com/cam/AsiaFairchild/
open http://www.redtubelive.com/cam/AspenPeeks/
open http://www.redtubelive.com/cam/BelleDaisy/
open http://www.redtubelive.com/cam/BelleMarce/
open http://www.redtubelive.com/cam/BriannaStarr/
open http://www.redtubelive.com/cam/Britini/
open http://www.redtubelive.com/cam/CRISTAL_EVANSS/
open http://www.redtubelive.com/cam/Canella/
open http://www.redtubelive.com/cam/CarleyTaylor/
open http://www.redtubelive.com/cam/CelestialTorres/

 

$ bash --version
bash --version
GNU bash, バージョン 4.2.25(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 またはそれ以降 &lt;http://gnu.org/licenses/gpl.html>

2014-09-02

http://anond.hatelabo.jp/20140902155559

というか、ちょい複雑なシェルスクリプト書く場合とかにPHPで書くケースは結構あるで。mapとかreduce、filterとか普通に使えるからな。

そんな奴見たこと無い。awkとかで大概どうでもなるし、

巨大なスクリプト時間が気になる様ならpythonとかで書き換えたりする。

PHPシェルスクリプト内で使うなんていう基地外は見たことが無い。

お前の言う複雑なシェルスクリプトってなんだ?

2012-08-27

サーバ情報監視の仕組み

cf). Software Design 2010/01号

vmstat を実行するスクリプトを書く
!#/bin/sh
vmstat 5 2 | tail -1 | awk '{print $4,$5,$6}'
xinetd のサービスとして動くようにする
  1. /etc/services にポートプロトコルを登録する
    • agent_mem 11001/tcp # memory monitoring
  2. xinetd が実行するための設定ファイルを書く
    • /etc/xinetd.d/agent_mem
  3. xinetd の再起動
  4. telnet で動作確認する
service agent_mem
{
        socket_type     = stream
        protocol        = tcp
        wait            = no
        user            = nobody
        server          = Monitor/agent_mem.sh
        only_from       = 127.0.0.1
        disable         = no
}
xinetd に登録したポートを叩くスクリプトを書く

php場合、fopen() でもいけると思うのだが、明示的に sockopen() を使う。うむ、perlよりも楽だわこりゃ。

&lt;?php /* -*-java-*- */
/**
 * モニタリングクライアント
 * 
 */
$fp = fsockopen( 'localhost', 11001, $errno, $errmsg, 30 );
if ( !$fp ) {
    echo "Error: $errno - $errmsg \n";
}
else {
    echo date('Y-m-d H:i:s'). "\t";
    $stmt = fgets ( $fp, 128 );
    if ( preg_match( "/([0-9]+) ([0-9]+) ([0-9]+)/", $stmt, $regs ) ) {
        $total = (int)$regs[1] + (int)$regs[2] + (int)$regs[3];
        echo $regs[1]."\t".$regs[2]."\t".$regs[3]."\t".$total."\n";
    }
    fclose( $fp );
}
cron に登録してログを取る。もしくは、スクリプトを while(1)で実行させておく

こいつをモニターとして走らせっぱなしに出来るようにする。

&lt;?php /* -*-java-*- */
/**
 * モニタリングクライアント
 * 
 */

function mem_monitor ( $host, $port ) {
    $fp = fsockopen( $host, $port, $errno, $errmsg, 30 );
    if ( !$fp ) {
        echo date('Y-m-d H:i:s'). "\t";        echo "Error: $errno - $errmsg \n";
    }
    else {
        echo date('Y-m-d H:i:s'). "\t";        $stmt = fgets ( $fp, 128 );
        if ( preg_match( "/([0-9]+) ([0-9]+) ([0-9]+)/", $stmt, $regs ) ) {
            $total = (int)$regs[1] + (int)$regs[2] + (int)$regs[3];
            echo $regs[1]."\t".$regs[2]."\t".$regs[3]."\t".$total."\n";
        }
        fclose( $fp );
    }
}

while( 1 ) {
    mem_monitor( 'localhost', 11001 );
    ob_flush();
    flush();
    sleep( 30 );
}

2012-07-27

http://d.hatena.ne.jp/Yamashiro0217/20120727/1343371036

ほとんど awk 使えば簡単ね。

問1

cat logfile

問2

awk -F',' '{print $1","$4}' logfile

問3

awk -F',' '$1=="server4"{print $0}' logfile

問4

cat logfile | wc -l

問5

sort -t',' -k1,1 -k3,3n logfile | head -5

問6

sort logfile | uniq | wc -l

問7

awk -F',' '{print $3}' logfile | sort -n | uniq | wc -l

問8

awk -F',' '{print $4}' logfile | sort | uniq -c | sort -nr | head -1

問9

awk -F',' 'gsub("server","xxx"){print $1}' logfile | sort | uniq -c

10

awk -F',' '$3&gt;=10{print $3}' logfile | sort -n | uniq

http://anond.hatelabo.jp/20120727173018

問3をgrepでやるならせめて ^server4, とすべき。server40があるかもしれないし、URLにserver4って文字が存在する可能性がある。

あとはもうちょっとawk勉強すると大体ほとんど全部awkで出来るということに気付くはず。

http://d.hatena.ne.jp/Yamashiro0217/20120727/1343371036

# cat a.log

# cat a.log |awk -F"," '{print $1","$4}'

# grep server4 a.log

# cat a.log |wc -l

# sort -t"," -k1,1 -k3,3n a.log | head -5

# sort a.log |uniq |wc -l

# cat a.log |awk -F"," '{print $3}' |sort |uniq |wc -l

あとはシェルスクリプトを作らないと無理そうなのでパス

追記

他の人の回答見ました。

http://anond.hatelabo.jp/20120727180525

パイプでつながなくてもawkファイル指定できるのとIFができるのとuniq -cは知らなかった。

今度使ってみよう。

2009-03-22

久しぶりにコードを書いた

pythonは相変わらず行末に;を置いてしまう。

awkで始めてifとwhileを使った。

CakePHPよりもRailsの方が触りやすいような気がした。

2009-01-07

Re:最近確信したこと

http://anond.hatelabo.jp/20090107031018

そのように感じるようになったのは、ボーカロイド好きな友人とチャットしていて、いい曲だと薦められた曲を聞いたとき、確かに良い曲ではあるけれど、これはボーカロイドを知ってる人・容認してる人じゃないと楽しめないということに気づいたとき。

普通人間が歌うようにまだ滑らかではないということでまだ一般的ではない合成音声を容認してるからというのが良くわかった。

ニコ動VOCALOIDカバー曲を投稿して活動してる awk こと id:pyawk だけど、個人的にはそういう風に感じる人が大多数であって欲しいなーと思う。

というのも、自分VOCALOIDを全く知らない人でも楽しんでもらえるのを目標に活動してるので。「どう聴いても生身の人間の歌にしか聞こえない!これがコンピュータで作った歌声なんて信じられない!!」なんてびっくりさせることが出来たらベストですね。VOCALOIDの歌声はこういうもんだっていう固定観念をあまり持って欲しくないんです。

そんな自分は、VOCALOIDにどっぷり漬かってるにも関わらず、VOCALOIDロボロボした歌声に耳が慣れてしまうのを恐れて、あまりVOCALOIDの曲は聴かずに「歌ってみた」系をよく聴いてます。自分プロデューサーであってもボカロファンではないのかもしれません。

2008-11-11

プログラミング言語が生き残れる条件

http://anond.hatelabo.jp/20081111231247

これからはXMLが簡単にパース出来ない言語は滅ぶよ!

だからawk大丈夫だね!

http://anond.hatelabo.jp/20081111103507

lispとかawkとかsedとかmakeとかshとかみたいに生き残れたら凄いけどなあ。

というか未だにCOBOLで新規開発している俺(と俺の職場)って一体。

隣の席のオバサンなんか汎用機のアセンブラいじってたし……。

ちなみに俺の好きな言語D言語です。20年後はDがスタンダード!!

2008-10-11

私のプログラム

初めは小学生の頃か。

実物のスペースインベーダー記憶はない。

しかし、それを皮切りにアーケードゲームのみならず、ゲームウォッチ、ケームセンター嵐などを経て、ファミコンが登場する「ゲーム」の時代だった。

「ゲーム」コンピューターゲーム意味になった時代だった。小学生も「コンピューター」にワクワクした。

21世紀コンピューターにより人工知能ができる。そんな時代だった。

でも、アルファベットを知らない小学生BASICは難しかった。ぴゅう太がせいぜいだった。

中学生学校PC-9801があった。後のパソコンである。

PRINT」で文字を表示する。「GOTO」で行き先を変える。それは分かった。でも何をすればよいか分からなかった。

だから「ベーマガ」で16進数を打った。でも動かなかった。何度も調べ、直し、試した。デバッグした。

してようやくゲームが動いた。ゲームはつまらなかった。

でも動いた。自分の入れた文字で数字でコンピュータが動いた。自分で動かした。動かせた。

BASICで線を引きマシン語で文字を動かした。

高専に進んだ。Turbo Pascalコラムスもどきを作った。

初めてフルスクラッチで書いた。配列も使った。

小学生のころから6年が過ぎていた。

Turbo Cも使った。IDEで使うそれは、インタプリタのノリだった。

FM-Rレイトレースもした。一晩かけて、エラーが起きていた。

でも、構造プログラミングを学んだ。ポインタも学んだ。マシン語の知識が役立った。

Solarisも使った。EmacsやXも使った。オブジェクト指向も知らずC++にも触れた。

GC構造体を代入して使い回し、Xサーバを落した。

家のノートFreeBSDを入れた。rootになった。

awksed正規表現を学んだ。そしてperlに出会った。

コラムスもどきを作ってから6年が過ぎていた。

テレホーダイにした。Mewを使った。チャットをした。

perlで掲示版の書き込みをチェックし、madokaで遊んだ。CGIを書いたりした。

脆弱性を見つけた。作者にメールした。ドキドキした。

perlと出会ってから6年が過ぎていた。

オープンソースプロジェクトに参加した。

はてなに出会った。JavaScriptに出会った。

BookmarkletgreasemonkeyAjaxオブジェクトだらけだった。

初めはゲームだった。でも最初だけだった。

ハードを叩き、ライブラリを叩いていた。

サーバを叩き、ブラウザを叩いてきた。

気が付いたら24年が経っている。

今、pythonで書いている。

ようやく、言語の違いには慣れてきた。でも、まだLISPを使った事はない。

道はまだまだある。未知の世界につながっている。

作りたい物が本当は何かは分からない。作れる物が本当は何かは分からない。

でも、何かがあるような気はする。だからプログラムしてみる。

どんなふうに動くのかは分かってない気がするけれど、分かっている事もある。

今も「コンピューター」にワクワクしている。

それが今の私のstatusだ。

http://anond.hatelabo.jp/20081011173016

2008-07-24

プログラミング言語オタが非プログラマー彼女言語世界を軽く紹介するための10言語

via Twitterオタが非オタの彼女にTwitter世界を軽く紹介するための10ユーザ

まあ、どのくらいの数のプログラミング言語オタがそういう彼女をゲットできるかは別にして、

「オタではまったくないんだが、しかし自分のオタ趣味を肯定的に黙認してくれて、

 その上で全く知らないプログラミング言語世界とはなんなのか、ちょっとだけ好奇心持ってる」

ような、ヲタの都合のいい妄想の中に出てきそうな彼女に、プログラミング言語のことを紹介するために

習得させるべき10言語を選んでみたいのだけれど。

(要は「脱オタクファッションガイド」の正反対版だな。彼女プログラミング布教するのではなく

 相互のコミュニケーションの入口として)

あくまで「入口」なので、アーキテクチャに過度に依存するアセンブラ等の低級言語は避けたい。

あと、いくら基礎といってもBrainf*ckやUnlambdaのような難しすぎるものは避けたい。

ポール・グラハムが『Arc』は外せないと言っても、それはちょっとさすがになあ、と思う。

そういう感じ。

彼女の設定は

PCはほぼウェブ閲覧専用、Excel程度は使える。

ロジカル度が高く、頭はけっこう良い

まずは俺的に。出した順番は実質的には意味がない。

Java

まあ、いきなりここかよとも思うけれど、「Java以前」を濃縮しきっていて、「Java以後」を決定づけたという点では

外せないんだよなあ。ゴスリングもハゲだし。

ただ、ここでオタトーク全開にしてしまうと、彼女との関係が崩れるかも。

この情報過多な言語について、どれだけさらりと、嫌味にならず濃すぎず、それでいて必要最小限の情報彼女

伝えられるかということは、オタ側の「真のコミュニケーション能力」の試験としてはいいタスクだろうと思う。

Smalltalk (Squeak), LOGO

アレって典型的な「オタクが考える一般人に受け入れられそうなプログラミング言語(そうオタクが思い込んでいるだけ。実際は全然受け入れられない)」そのものという意見には半分賛成・半分反対なのだけれど、それを彼女にぶつけて確かめてみるには一番よさそうな素材なんじゃないのかな。

プログラミング言語オタとしてはこの二つは“教育用言語”としていいと思うんだけど、率直に言ってどう?」って。

Haskell

ある種の言語オタが持ってるラムダ計算への憧憬と、ACM監修の関数型言語純粋さへのこだわりを

彼女に紹介するという意味ではいいなと思うのと、それに加えていかにも参照透過な

純粋関数型で許される計算順序の規定」を体現するモナド

純粋関数型言語の非正格性」を体現する無限リスト

の二要素をはじめとして、オタ好きのする要素を言語にちりばめているのが、紹介してみたい理由。

Common LISP

たぶんこれを見た彼女は「Emacsだよね」と言ってくれるかもしれないが、そこが狙いといえば狙い。

この系譜の作品がその後続いていないこと、これがポール・グラハムの間では大人気になったこと、

ポールグラハムがウェブサービスの構築に使って、それがいろんなウェブサービス開発者にも影響しててもおかしくはなさそうなのに、

実際のウェブサービスでこういうのが使われないこと、なんかを非オタ彼女と話してみたいかな、という妄想的願望。

Perl

「やっぱりプログラミングバッチ処理のためのものだよね」という話になったときに、そこで選ぶのは「awk

でもいいのだけれど、そこでこっちを選んだのは、この言語にかけるラリーdankogaiの思いが好きだから。

断腸の思いで延ばしに延ばしてそれでも2008年、っていうPerl 6のリリース予定日が、どうしても俺の心をつかんでしまうのは、

そのリリースというイベントへの諦めきれなさがいかにもオタ的だなあと思えてしまうから。

Perlリリース延期を無駄だとは思わないし、拙速リリースは無茶だろうとは思うけれど、一方でこれが

GuidoやMatzだったらきっちり予定通りリリースしてしまうだろうとも思う。

なのに、各所に頭下げて迷惑かけてリリースを延期してしまう、というあたり、どうしても

「自分の言語を形作ってきた哲学(TMTOWTDI)が捨てられないオタク」としては、たとえラリーがそういうキャラでなかったとしても、

親近感を禁じ得ない。言語自体の高評価と合わせて、そんなことを彼女に話してみたい。

Postscript

今の若年層でPostscriptを直で書いたことのある人はそんなにいないと思うのだけれど、だから紹介してみたい。

PDFよりも前の段階で、DTP哲学とか印刷技法とかはこの作品で頂点に達していたとも言えて、

こういうクオリティプログラミング言語エディタで書かれてたんだよ、というのは、

別に俺自身がなんらそこに貢献してなくとも、なんとなくプログラミング言語好きとしては不思議に誇らしいし、

いわゆるJava VMでしかスタック言語を知らない彼女には見せてあげたいなと思う。

PHP

PHPの「HTMLに埋め込み可能な点」あるいは「RDBMSとの接続性」をオタとして教えたい、というお節介焼きから教える、ということではなくて。

HTMLテンプレートエンジンを作り続ける」的な感覚言語オタには共通してあるのかなということを感じていて、

だからこそアメリカ版『Yahoo!』の開発言語PHP以外ではあり得なかったとも思う。

「MとVとCを分離なんてできない」というオタの感覚今日さらに強まっているとするなら、その「オタクの気分」の

源はPHPにあったんじゃないか、という、そんな理屈はかけらも口にせずに、

単純に楽しんでもらえるかどうかを見てみたい。

Prolog

これは地雷だよなあ。地雷が火を噴くか否か、そこのスリルを味わってみたいなあ。

こういう述語論理風味の計算をこういうかたちで言語化して、それが非オタに受け入れられるか

気持ち悪さを誘発するか、というのを見てみたい。

C++

9本まではあっさり決まったんだけど10本目は空白でもいいかな、などと思いつつ、便宜的にC++を選んだ。

Javaから始まってC++で終わるのもそれなりに収まりはいいだろうし、テンプレート以降のメタプログラミング時代

の先駆けとなった言語でもあるし、紹介する価値はあるのだろうけど、もっと他にいい言語がありそうな気もする。

というわけで、俺のこういう意図にそって、もっといい10本目はこんなのどうよ、というのがあったら

教えてください。

「駄目だこの増田は。俺がちゃんとしたリストを作ってやる」というのは大歓迎。

こういう試みそのものに関する意見も聞けたら嬉しい。

2007-05-22

スクリプト言語使用者におけるハマり度レベルの変遷

LV0 スクリプト言語?どうせAUTOEXEC.BATとかだろ?どうでもいいよ…

LV1 Perlはあんまり堅苦しくないな。ってかこのor dieって何なの?

LV2 流行言語は綺麗だな。Rubyってのはなんか日本人多くて結構いいかも。

LV3 Rubyって神じゃね?理想の言語って感じ・・・

LV4 PHPも気が利くわりにドジっ子でかわいいな。LispとかSchemeとかHaskellもいい・・・

LV5 Pythonってワンライナー書けないのにWeb2.0言語扱いされててうぜぇ。Python死ね!

LV6 Python結婚してくれ!

LV7 やべぇPython最高!Pythonエディタさえあれば生きていける!

LV8 Python結婚した!俺はPython結婚したぞ!!

LV9 やっぱRubyRailsは最高だわ

MAX sed/awkとちゅっちゅしたいよぉ〜

http://anond.hatelabo.jp/20070522174635

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん