13/03/08 13:01:05.08
JavaScript, Perl, PHP, Python, Ruby, …
スクリプト言語をすべて扱うスレッドです。
最強のスクリプト言語は、どれよ?
さあ、死ぬまで語りやがれ!!!
■ スクリプト言語の用途
Webアプリ、シェルスクリプト
■ スクリプト言語の特徴
実行速度に優れているわけではないが、
取り回しに優れ、コードの作成や修正が容易、プログラマの負担が軽い!
・インタプリタ
・動的型
・正規表現
・クロージャ
などを利用できるものがある。
長いコードはここで
URLリンク(play.island.ac)
【Perl,Python,PHP】LL バトルロワイヤル 29【JS,Ruby】
スレリンク(tech板)
2:uy
13/03/08 13:27:38.88
Rubyが最強だろ
終了
3:デフォルトの名無しさん
13/03/08 13:40:31.96
____
__,,/ _, ----`ヽ :.
:. / _ ___ 、\
/ / i \ \\ :.
:. ,'./ i ヽ:. ヽ:.:.. ヽ.ヽ ←Lua
,'/ / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ :.
:. |i .i i .i / ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ}
|i .i l :N_, -弋 \弌弋ナ:}:.:}
:. |i∧ ', :{ ,ィjモト \ イjミトイイV :. な…
.| :メヽ.', `ozZ} izN。ハ::{ なんなんですか?
:. | :ヾ_! ゝ "゙゙ ' `゙ ハ.:', :. ここ、どこですか?
| :.:_イ .:.ヽ. (二フ , イ :.:.:!:.ヽ なんであたし
:. / rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\:. 貼られたんですか?
/ ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\
:. / .{. ',ヾ、ヽi .:.:.{ /(^` |.:.:.:.//: : :.}: . ヽ.:.
/ / ) ヽ ヾ、ヽ:.ハ ヤ{ ∧/.-‐'": : |:.:. i ',
./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、 : : : l:.:.: .ハ ',
{ /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.}
V | .:.:/:.:|_,ィ' ̄ ヽ三{ `ー-ノ : イ : : :/:.:i.:{ リ
ヽ:.:{、.:.V : : ヘ : : {: : :/:.::∧|
ヽ! )人 : : :人 : : : / \! :.
" ヽ : : : : :/イ{ :.ノ: : : :.\ :.
:. \__///: :\______/: : : : : : : ヽ
/ //: : :|;|: : : : : : i: : : __: : : : ',
:. / 、 {;{ |;| . : i/. : : : : : :|
/ `Y;{. . . .|;|. : : : /i: : : : : : : : :l
4:デフォルトの名無しさん
13/03/08 16:23:27.10
URLリンク(d.hatena.ne.jp)
5:uy
13/03/08 22:33:17.12
>>僕は静的な C 言語から、動的な Perl、Lisp、JavaScript を経て、現在では静的な Haskell を主に使っている。
この時点でバカ
この人はえらそうに文章かいていいレベルじゃない
6:デフォルトの名無しさん
13/03/08 23:30:22.81
特にプログラムの勉強もしたことのない低学歴の平凡な素人がお遊びで作ったPHPスタンドアロンアプリ。
hcapp.rakusaba.jp
7:デフォルトの名無しさん
13/03/09 06:40:42.03
>>2
その最強()ルビーを本家ルビーよりも早く動かせるTopazのPython最強だな。
8:デフォルトの名無しさん
13/03/09 07:15:11.81
JavaもREPLあるからスクリプト言語だよね
URLリンク(www.scravy.de)
Java最強
9:デフォルトの名無しさん
13/03/09 07:27:00.08
1 宿題の丸投げという行為はカンニングと同等。学則による処分の対象
2 丸投げした質問者もそれを知って回答した回答者も大学の単位認定業務の
妨害、すなわち偽計業務妨害
3 宿題の問題は著作物であり、それをアップローダやスレに投稿する事は
公衆送信権の侵害。うpを唆しているテンプレは著作権侵害の教唆
違法行為が前提で成り立つスレなので、次スレは立てずにこのスレで終了
10:デフォルトの名無しさん
13/03/09 08:45:27.72
2・3スレ前で「お題」が出て色んな言語で解いていたのが一番良かった。
自分が使っていない言語の回答を見て、
ああこんな解き方があるのかととても参考になったよ。
11:デフォルトの名無しさん
13/03/09 09:01:33.02
URLリンク(s.ameblo.jp)
心理学者フィリップ・ジンバルド は1969年、人が匿名状態にある時の行動特性を実験により検証した。
その結論は、「人は匿名性が保証されている・責任が分散されているといった状態におかれると、
自己規制意識が低下し、『没個性化』が生じる。
その結果、情緒的・衝動的・非合理的行動が現われ、また周囲の人の行動に感染しやすくなる。」
というものであった。
12:デフォルトの名無しさん
13/03/09 09:06:47.71
>>10
スレタイ変えなくても、御題出すだけで
C#厨やJava厨は排除できたよね
あいつら口だけでコード書けないから
13:デフォルトの名無しさん
13/03/09 09:13:25.82
お題なんて意味ないわ
機能が豊富な言語、シンタックスシュガー満載な言語、
関数型の言語が短くかけるのは分かりきってる。
コードの短さなんてのは言語の評価する視点の一つに過ぎない
14:デフォルトの名無しさん
13/03/09 09:18:39.81
>>12
コード書けないとは、どういうことを意味するのかな。
15:デフォルトの名無しさん
13/03/09 09:21:03.28
ちょっと昼にでも本屋行ってオッパイソンの本買ってくる
16:デフォルトの名無しさん
13/03/09 09:21:22.82
>>12
C#厨、Java厨なんて呼んで召喚したいわけね
17:デフォルトの名無しさん
13/03/09 09:34:01.44
>>14
プログラマじゃないんじゃね?
それでも「IDEが~」とか書くことくらいは出来る
18:デフォルトの名無しさん
13/03/09 09:55:42.24
お題
こんな感じにコマンドラインで動くTODO管理アプリを作りなさい
$ ./todo add "本屋でPythonの本を買ってくる"
$ ./todo add "たいやきを買ってくる"
$ ./todo list
1: 本屋でPythonの本を買ってくる
2: たいやきを買ってくる
$ ./todo done 2
$ ./todo list
1: たいやきを買ってくる
アドリブも可
19:デフォルトの名無しさん
13/03/09 09:58:45.00
あ、>>18訂正。$ ./todo done 1 でお願いします
番号が繰り上がることに注意(そうしないと後々 todo done 189203 とかしなきゃならなくなるので)
20:デフォルトの名無しさん
13/03/09 10:03:39.23
>>18
TODを知らないからお呼びでないのだが、
done 2
これどういう意味なの?
21:20
13/03/09 10:05:08.87
かぶったか。了解。
22:デフォルトの名無しさん
13/03/09 10:18:08.88
可変長のリストの入力に対して固定長のリストを出力したいのですが
足りない部分を先頭の要素から0で埋めようと思います
例:出力が固定長 5 のとき
入力 [1, 3] 出力 [0, 0, 0, 1, 3]
入力 [2, 1, 3] 出力 [0, 0, 2, 1, 3]
入力 [5, 4, 2, 1, 3] 出力 [5, 4, 2, 1, 3]
一番シンプルに書ける言語はどんなのがありますか?
23:20
13/03/09 10:25:31.22
>>22
Prolog
24:デフォルトの名無しさん
13/03/09 10:30:02.10
>>22
Python
xs = [1, 3]
print(([0] * 5 + xs)[-5:])
25:デフォルトの名無しさん
13/03/09 10:35:08.59
>>18
$ cat todo
#!/usr/bin/env python
import sys
import os
import pickle
if os.path.isfile('todo.dat'):
with open('todo.dat', 'rb') as fp:
todo = pickle.load(fp)
else:
todo = []
if sys.argv[1] == 'list':
for x in enumerate(todo, 1):
print('%s: %s' % x)
elif sys.argv[1] == 'add':
todo.append(sys.argv[2])
elif sys.argv[1] == 'done':
todo.pop(int(sys.argv[2]) - 1)
with open('todo.dat', 'wb') as fp:
pickle.dump(todo, fp)
26:デフォルトの名無しさん
13/03/09 10:40:12.87
>>25
pythonが開発効率一位か
27:デフォルトの名無しさん
13/03/09 10:42:36.85
>>24
おもしろい記法があるものだな。
28:デフォルトの名無しさん
13/03/09 11:50:36.85
>>18
@Mathematica
reset 機能を追加。
In:= toDo[mode_,action_:""]:=Module[{todofile,todolist},
todofile="todo.txt";
todolist=Import[todofile,"Text"]//
StringSplit[#,"¥n"]&;
Which[
mode == "add",
Append[todolist,action]//
Export[todofile,#]&;,
mode == "list",
todolist//
MapIndexed[{ToString[#2[[1]]]<>":",#1}&,#]&//
Grid,
mode == "done",
Drop[todolist,{action}]//
Export[todofile,#]&;,
mode == "reset",
{}//
Export[todofile,#]&;
True,
{}]
];
29:デフォルトの名無しさん
13/03/09 11:58:23.92
>>22
@Mathematica
In:= lst = {1,3};
In:= PadLeft[lst,5]
Out:= {0,0,0,1,3}
リストのゼロ埋めは良く使うので、
組み込み関数として最初から持ってる言語も多いのでは。
>>24
def padLeft(lst, n):
return (([0] * n + lst)[-n:])
↑自分の Python ライブラリに追加しとくわ ノシ
30:デフォルトの名無しさん
13/03/09 12:02:12.76
入力長 > 出力長
のときの動作が未定義
31:デフォルトの名無しさん
13/03/09 12:25:10.44
>>30
Mathematica だと、こうなる。
In:= PadLeft[{6,5,4,2,1,3},5]
Out= {2, 3, 4, 5, 6}
Python だとこんな感じかな。
def padLeft(lst, n):
if len(lst)>n:
return lst[-n:]
else:
return (([0] * n + lst)[-n:])
32:デフォルトの名無しさん
13/03/09 12:29:21.74
>>31
Pythonのその条件分岐は無くても同じ
xs = [1,2,3,4,5,6,7,8]
print(([0] * 5 + xs)[-5:]) #=> [4, 5, 6, 7, 8]
33:デフォルトの名無しさん
13/03/09 12:32:19.79
>>32
ほんとだ。
ついでに padRight も。
def padRight(lst, n):
return ((lst + [0] * n)[:n])
34:33
13/03/09 12:33:45.72
インデントが消えてしまった。連投スマソ。
def padRight(lst, n):
return ((lst + [0] * n)[:n])
35:デフォルトの名無しさん
13/03/09 12:59:45.16
perl
>>18
use 5.016;
use warnings;
use Tie::File;
tie my @list, 'Tie::File', 'todo.dat' or die $!;
given($ARGV[0]){
when('add'){ push(@list, $ARGV[1]) }
when('list'){ print map{ "$_: $list[$_ - 1]\n" } (1 .. @list) }
when('done'){ splice(@list, $ARGV[1] - 1, 1) }
default{ say "$0 usage: (add todo/list/done number)" }
}
>>22
my @l = (1, 3);
my @r = ((0) x 5, @l)[@l .. $#l + 5];
36:デフォルトの名無しさん
13/03/09 13:19:16.57
>>31
なんで順番かわるんだろ
37:デフォルトの名無しさん
13/03/09 13:21:07.05
>>35
perl は二度と使いたくないと決心を新たにしました。
38:31
13/03/09 13:25:49.63
>>36
ごめん。貼り付ける計算結果を間違えた。orz
正しくは、
In:= PadLeft[{6, 5, 4, 2, 1, 3}, 5]
Out= {5, 4, 2, 1, 3}
39:デフォルトの名無しさん
13/03/09 13:50:02.25
完動品として、>>18を俺ならこう作る
#!/usr/bin/perl
use strict;
use warnings;
my ($com, $msg) = @ARGV;
open(my $FH, "+<", "todo.data") || die("ファイルが開けない");
flock($FH, 2);
my @data = <$FH>;
if (!defined $com || $com eq "") {
print "todo [add | done | list] [value]\n";
} elsif ($com eq 'add') {
push (@data, $ARGV[1]."\n");
} elsif ($com eq 'done') {
splice(@data, ($ARGV[1] - 1), 1);
} elsif ($com eq 'list') {
for (my $i=0; $i<scalar @data; $i++) { print $i + 1 , ':', $data[$i]};
}
seek($FH, 0, 0);
print $FH $_ for (@data);
truncate ($FH, tell($FH));
exit;
40:デフォルトの名無しさん
13/03/09 13:57:24.34
$msg に値入れてるのにARGV[1]見てるのは、ちょっとした茶目っ気
41:デフォルトの名無しさん
13/03/09 14:29:05.12
少ないな、もっと色々な言語の人くれよ
42:デフォルトの名無しさん
13/03/09 14:33:01.43
>>35って配列をファイルに書きだすコード抜けてる?って思ったら
Tie::Fileだと配列への変更がファイルに反映されるのか
URLリンク(search.cpan.org)
やはりあなどれないPerlあなどれない
43:デフォルトの名無しさん
13/03/09 14:38:25.99
Perl好きな俺が言うのもなんだけどタイはわかりにくい・・・
44:デフォルトの名無しさん
13/03/09 18:09:12.85
Thailand
45:デフォルトの名無しさん
13/03/09 19:08:30.26
おぉ?RubyやPHPのソースがないんじゃないか?
雑談の時は賑やかなのにソース晒すとなったら静かだなおい
46:デフォルトの名無しさん
13/03/09 19:36:50.88
rubyのひとは2chにソース貼るの極端に嫌う
著作権が自動的に2chに譲渡されるとか何とか
47:デフォルトの名無しさん
13/03/09 20:30:12.74
>>18
require "yaml"
filename = "todo.yaml"
todo = File.exists?(filename) ? YAML.load_file(filename) : []
case ARGV[0]
when "add"
todo << ARGV[1]
YAML.dump(todo, open(filename, "w"))
when "list"
todo.each_with_index {|s, i| puts "#{i + 1}: #{s}" }
when "done"
idx = ARGV[1].to_i - 1
todo.delete_at(idx)
YAML.dump(todo, open(filename, "w"))
end
>>22
xs = [1,3]
p [0] * (5 - xs.size) + xs
別にruby詳しいわけじゃないから推奨されてない書き方してるかも
48:デフォルトの名無しさん
13/03/09 20:42:36.02
>>46
それをやたら主張する人が一時期いたんだよな
49:デフォルトの名無しさん
13/03/09 20:57:35.20
>>46
Ruby処理系のパッチなんかを2chに貼ると怒られることはあるけど
お題の答えを貼るのまで嫌がったり問題視したりはしてないはず
50:デフォルトの名無しさん
13/03/09 21:06:29.34
>>46>>49
それじゃオープンソースアプリの一部をコピペしたりしたら、
その一部が2chの著作物になるのか?
そんな主張が認められるのか?
だとしたら、コピペしまくれば2ch所有のソースばかりになるな
51:デフォルトの名無しさん
13/03/09 21:12:53.25
それってソースコードに限らないだろうし、とんでもないことになるよね
市販の小説をコピペしても2chの著作物になるなんて
52:デフォルトの名無しさん
13/03/09 21:17:58.60
>>50
バトンといっしょで権利を持たない人から権利を承継することはない
だから誰かの著作物であるソースを2chにコピペしても2chが著作権を取得することはない
49で書いたのは「Rubyに不具合あったのでここ(2ch)にパッチ貼っちゃいますね」的な事例
53:デフォルトの名無しさん
13/03/09 21:18:07.75
クソスレ
54:デフォルトの名無しさん
13/03/09 21:36:39.84
たまにはガウチェ(゚д゚)!使いさんの回答を見たい
55:デフォルトの名無しさん
13/03/09 22:29:32.32
なるほど、Rubyユーザーはバグ見つけても上流にパッチ投げないクソが多いんですね
56:デフォルトの名無しさん
13/03/09 23:05:27.22
xs=[1,3]
(5-xs.size).times{xs.unshift(0)}
57:デフォルトの名無しさん
13/03/10 01:00:11.68
いつまで僕らはdankogaiを崇め続けなければならないのか
URLリンク(anond.hatelabo.jp)
Perlのためにdankogaiがたくさんコードを書いて貢献したのは知っている。
で、その貢献とやらは何十年にも渡って僕らが崇め続けなければならないほど凄いものだったのか?
僕らはいつまでdankogaiに「凄いですねー」ってご機嫌を取り続けないといけないの?
英語圏でこれほどまでに自分の過去の貢献を誇示し続けるOSSプログラマって少ないよ。
dankogaiがいつまでも過去の貢献を振りかざし続けるのはもうそれは老害と言われても仕方が無いんじゃないかなあ。
古参OSSプログラマがみんな過去の貢献にあぐらをかいて若者を見下すようになったらOSSは確実に終わる。
58:デフォルトの名無しさん
13/03/10 01:33:09.13
>>57
これ書いたの誰かわかるわ~w
まあ同意だけど
59:デフォルトの名無しさん
13/03/10 01:35:43.28
Perlの連中はわざわざこんなエントリ書かなきゃならんのか
ご愁傷様
60:デフォルトの名無しさん
13/03/10 02:04:37.36
Twitter界隈でここんところPerlがディスられてたが
ついにこのスレに飛び火したかw
61:デフォルトの名無しさん
13/03/10 02:21:10.61
perl撲滅されたら困るんですね
よくわかります
62:デフォルトの名無しさん
13/03/10 02:25:17.22
dankogaiもライブドア事件のときに朝生でKYな存在だったのに
書評をコンスタントに書くだけでなぜか重鎮的な地位を手に入れたよな
あれは不思議で仕方なかった
63:デフォルトの名無しさん
13/03/10 02:40:17.43
係属は力なり
64:デフォルトの名無しさん
13/03/10 02:47:21.58
祇園精舎の鐘の声