=?iso-8859-1?q?=5BComm=5D_Ruby_--_=C2=D2=C9=CC=CC=C9=C1=CE=D4_=D7_=CD=C9?= =?iso-8859-1?q?=D2=C5_=D3=CB=D2=C9=D0=D4=CF=D7=D9=C8_=D1=DA=D9=CB=CF=D7!?=
Henri Bourbon
=?iso-8859-1?q?useperl_=CE=C1_fastmail=2Efm?=
Вт Ноя 12 00:57:17 MSK 2002
On 9 Nov 2002 22:57, Ilya Palagin wrote:
> в целях популяризации ruby - вот-с :-)
Оооооо! Как я вижу, Ruby -- просто бриллиант в мире скриптовых языков! Я
перевел вашу программу, г-н Палагин, на язык Coal, чья отстойность, о
которой так много говорили большевики, становится совершенно очевидной
при взгляде на обе программы (на ruby и coal), помещенные рядом, в 2
колонки:
#!/usr/bin/ruby -w | #!/usr/bin/perl -w
content = Hash.new |
File.open(ARGV[0], "r") do |f| | my @lines = <>;
cnt = 0 |
while (line = f.gets) |
content[cnt] = line; cnt += 1 |
end |
content.keys.each do |n| | for (0.. на lines-1) {
m = rand(cnt) | my $r = int(rand(@lines));
content[n], content[m] = \ | @lines[$_, $r] = @lines[$r, $_];
content[m], content[n] | }
end |
end |
content.keys.each { |n| print content[n]} | print @lines;
Примечание: о том, что алгоритм перемешивания строк, придуманный вами,
неправилен (разные перестановки входных строк имеют разную вероятность
появления на выходе), мы здесь не говорим. О том, что правильный и более
эффективный (на 1 итерацию меньше) алгоритм, точнее, программу, его
реализующую, любой, бегло читавший Perl FAQ, отыскал бы за 3 минуты, мы
здесь не говорим. О том, что создать вместо массива хэш с ключами в виде
чисел 1..N может прийти в голову, по-видимому, только программисту на
Вижуал Барсик, Си Диез или Ruby, мы здесь не говорим.
Говорим же мы здесь о том, насколько более красивой, простой и наглядной
является, например, конструкция
строки.ключи.каждый { |n| напечатать строки[n]}
по сравнению с
напечатать @строки;
Как справедливо отмечали большевики, одной из наиболее гадких черт языка
Coal является то, что все можно сделать более, чем 1-м способом.
Например, может ли не возмущать, что
print @lines;
можно записать как
foreach my $line (@lines) {
print $line;
}
или, скажем,
print foreach @lines;
?
Ruby. Implementing Visual Basic Traditions since 1995.
---
Я нигде не рисовал смайликов, и может возникнуть ощущение, что все
сказанное я злобно процедил через зубы. Конечно же, нет! В этом постинге
не было почти ни одной серьезной строки, все это стёб чистейшей воды.
O \
__ )
)
O /
--
HB
Подробная информация о списке рассылки community