Re: PLEAC
От: Vermicious Knid  
Дата: 20.06.06 10:07
Оценка: 27 (5)
Здравствуйте, Mamut, Вы писали:

M>Если кто еще не знал, PLEAC — Programming Language Examples Alike Cookbook


M>Добавляйте туда Nemerle и D

Я думаю не стоит овчинка выделки. Первоисточник всех примеров Perl Cookbook. Не тот это язык, чтобы с него примеры брать.

Большая часть примеров выльется не в сравнение языков, а сравнение стандартных библиотек. Если на Nemerle скорее всего можно все эти примеры переписать используя стандартные библиотеки MS .NET Framework, то для D часто придется использовать сторонние библиотеки(которых кстати довольно мало).

Как сравнение языков даже 99 Bottles of Beer и то лучше. Правда там уже есть и Nemerle, и D. Но Nemerle там представлен мягко говоря далеко не самым красивым кодом. Я сегодня от нечего делать написал и засабмитил пару вариантов программы. Если совсем честно, то не написал, а в основном украл из вариантов для Haskell и D.

Самый краткий вариант(используется питонообразный синтаксис):
#pragma indent
using System

def capitalize = s => Char.ToUpper(s[0]).ToString() + s.Substring(1)

def beers(n)
  | 0 => "no more bottles of beer"
  | 1 => "1 more bottle of beer"
  | _ => $"$n bottles of beer"

def onTheWall = n => $"$(beers(n)) on the wall, $(beers(n)).\n"

def passAround(n)
  | 0 => $"Go to the store and buy some more, $(beers(99)) on the wall.\n"
  | _ => $"Take one down and pass it around, $(beers(n-1)) on the wall.\n"

$[99, 98 .. 0].Iter(n => Console.WriteLine(capitalize(onTheWall(n)) + passAround(n)))


Вариант с использованием foreach, обычного синтаксиса и extention methods:
using System;

module StringExt {
  public Capitalize(this s : string) : string {
    Char.ToUpper(s[0]).ToString() + s.Substring(1)
  }
}

def beers(n) {
  | 0 => "no more bottles of beer"
  | 1 => "1 more bottle of beer"
  | _ => $"$n bottles of beer"
}

def onTheWall = n => $"$(beers(n)) on the wall, $(beers(n)).\n";

def passAround(n) {
  | 0 => $"Go to the store and buy some more, $(beers(99)) on the wall.\n"
  | _ => $"Take one down and pass it around, $(beers(n-1)) on the wall.\n"
}

foreach(n in [99, 98 .. 0])
    Console.WriteLine(onTheWall(n).Capitalize() + passAround(n))


В качестве оправдания практически ненужной в предыдущих примерах функции capitalize вариант с преобразованием чисел в числительные.
def numeral(n)
{
    assert(n <= 99);
    def tens = array["twenty","thirty","fourty","fifty","sixty","seventy","eighty","ninety"];
    def nums = array["no more", "one", "two", "three", "four", "five", "six", 
                    "seven", "eight", "nine", "ten", "eleven", "twelve"];
    def teens = array["thir", "four", "fif", "six", "seven", "eigh", "nine"];
    if (n < 13)
        nums[n] 
    else if (n < 20)
        teens[n - 13] + "teen"
    else
        tens[(n / 10) - 2] + (if ((n % 10) == 0) "" else " " + nums[n % 10])
}
// остальной код поскипан, в этом варианте меняется только функция beers
def beers(n)
{
    | 0 => "no more bottles of beer"
    | 1 => "one more bottle of beer"
    | _ => $"$(numeral(n)) bottles of beer"
}
PLEAC
От: Mamut Швеция http://dmitriid.com
Дата: 19.06.06 22:00
Оценка: 5 (1)
Если кто еще не знал, PLEAC &mdash; Programming Language Examples Alike Cookbook

Добавляйте туда Nemerle и D
От чего, от чего, от чего тах хорошо?
Потому что кто-то любит программиста
<< RSDN@Home 1.2.0 alpha rev. 647>>


dmitriid.comGitHubLinkedIn
Re: PLEAC
От: Андрей Хропов Россия  
Дата: 20.06.06 06:39
Оценка: +1
Здравствуйте, Mamut, Вы писали:

M>Если кто еще не знал, PLEAC &mdash; Programming Language Examples Alike Cookbook


M>Добавляйте туда Nemerle и D

Да там даже C# нет,
а на Java реализовано 16.86% примеров,
а на C++ всего 3.43% !

Похоже что сайт скрипт-ориентирован (ибо Perl/Python/Ruby там 100/85/60 % соответственно).
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: PLEAC
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.06.06 00:41
Оценка: :)
Здравствуйте, Vermicious Knid, Вы писали:

VK>Большая часть примеров выльется не в сравнение языков, а сравнение стандартных библиотек.


В принципе это полезно для изучающих язык.

VK> Если на Nemerle скорее всего можно все эти примеры переписать используя стандартные библиотеки MS .NET Framework, то для D часто придется использовать сторонние библиотеки(которых кстати довольно мало).


Дык сразу выявляется недостаток языка — остуствие удобных и обширных библиотек.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: PLEAC
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.06.06 22:54
Оценка: +1
Здравствуйте, anonymous, Вы писали:

A>Все примеры взяты из Perl Cookbook.


Что и следовало ожидать. Они подчеркнуто скрптовые.

В прочем если будет время попробую их реализовать. Причем не ради пенисометрии (хотя это тоже забавно), а просто потому, что это неплохой обучающий материал.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: PLEAC
От: Mamut Швеция http://dmitriid.com
Дата: 20.06.06 06:51
Оценка:
M>>Если кто еще не знал, PLEAC &mdash; Programming Language Examples Alike Cookbook

M>>Добавляйте туда Nemerle и D

АХ>Да там даже C# нет,
АХ>а на Java реализовано 16.86% примеров,
АХ>а на C++ всего 3.43% !

АХ>Похоже что сайт скрипт-ориентирован (ибо Perl/Python/Ruby там 100/85/60 % соответственно).


Примерно так и есть, но мы ж не боимся трудностей
От чего, от чего, от чего тах хорошо?
Потому что кто-то любит программиста
<< RSDN@Home 1.2.0 alpha rev. 647>>


dmitriid.comGitHubLinkedIn
Re[2]: PLEAC
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.06.06 00:23
Оценка:
Здравствуйте, Андрей Хропов, Вы писали:

АХ>Похоже что сайт скрипт-ориентирован (ибо Perl/Python/Ruby там 100/85/60 % соответственно).


Дык примеры то ли писались на одном из скриптов, или подбирались од оные.

Но на Немерле там можно в большинстве случаев сделать не хуже чем на Руби. Так что можно просто изучать исходники Руби.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: PLEAC
От: anonymous Россия http://denis.ibaev.name/
Дата: 21.06.06 06:10
Оценка:
Здравствуйте, VladD2, Вы писали:

АХ>>Похоже что сайт скрипт-ориентирован (ибо Perl/Python/Ruby там 100/85/60 % соответственно).

VD>Дык примеры то ли писались на одном из скриптов, или подбирались од оные.

Все примеры взяты из Perl Cookbook.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.