From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Tue, 12 Nov 2002 00:57:17 +0300 From: Henri Bourbon X-Mailer: The Bat! (v1.60m) Personal X-Priority: 3 (Normal) Message-ID: <15058006468.20021112005717@fastmail.fm> To: community@altlinux.ru MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Transfer-Encoding: 8bit Subject: [Comm] Ruby -- бриллиант в мире скриптовых языков! Sender: community-admin@altlinux.ru Errors-To: community-admin@altlinux.ru X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.0.9 Precedence: bulk Reply-To: community@altlinux.ru List-Unsubscribe: , List-Id: List-Post: List-Help: List-Subscribe: , List-Archive: Archived-At: List-Archive: List-Post: 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