несложный ФЯ с человеческим лицом
От: dmz Россия  
Дата: 26.03.08 05:06
Оценка:
Привет,


а нет ли ФЯ с относительно несложным синтаксисом, в первую очередь для обучения, который бы годился, как замена питона для всякого рода скриптинга, ну и например, что бы на нем писать всякого рода вычислительные задачи ( кластеризация информации на странице, etc).

Хочется что-то вроде питона, но с настоящими list-comprehensions, паттерн-матчингом (особенно), гарантированной развертки tail recursion. Эрланг кажется тяжеловесным для этой задачи, плюс тормозной файловый ввод-вывод и регекспы / слабая поддержка строк. OCaml кажется несколько сложным, т.е. он явно сложнее эрланга. А есть еще что-нибудь (про nemerle знаю, но оно, судя по всему пока нестабильно?)

Идеально, конечно, было бы что-то вроде питона, но декларативный и с нужными фичами.
Re: несложный ФЯ с человеческим лицом
От: Zert  
Дата: 26.03.08 05:18
Оценка:
Всё-таки, посмотри OCaml. Он, естественно, сложнее Erlang'а (проще его некуда), но он имеет самое человечное лицо из всех языков ФП.
Re: несложный ФЯ с человеческим лицом
От: dr.Chaos Россия Украшения HandMade
Дата: 26.03.08 05:57
Оценка: 11 (2) +3
dmz wrote:

> Идеально, конечно, было бы что-то вроде питона, но декларативный и с

> нужными фичами.

Haskell очень простой и понятный язык ИМХО, если не лезть в устройство монад
и прочие дебри ТК, а относится к ним как к DSL. На нём кажись даже море
админских утилит написано.
Posted via RSDN NNTP Server 2.1 beta
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Re: несложный ФЯ с человеческим лицом
От: nikov США http://www.linkedin.com/in/nikov
Дата: 26.03.08 06:58
Оценка: +3
Здравствуйте, dmz, Вы писали:

dmz>а нет ли ФЯ с относительно несложным синтаксисом, в первую очередь для обучения


Посмотрите F#.

Гибридный (функционально-императивный) язык на платформе .NET, родственный с OCaml.
Есть карринг, оптимизация хвостовой рекурсии, автоматическая генерализация, list/sequence comprehensions, pattern matching. Планируют приделать классы типов.

Microsoft планирует включать его в стандартную поставку Visual Studio, сейчас поддержка в Visual Studio ставится отдельным инсталлятором.
Re[2]: несложный ФЯ с человеческим лицом
От: dmz Россия  
Дата: 26.03.08 07:04
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, dmz, Вы писали:


dmz>>а нет ли ФЯ с относительно несложным синтаксисом, в первую очередь для обучения


N>Посмотрите F#.


А он есть под Mono?

N>Microsoft планирует включать его в стандартную поставку Visual Studio, сейчас поддержка в Visual Studio ставится отдельным инсталлятором.


На Маке с Ubuntu в качестве единственной ОС это не очень актуально, но все равно спасибо.
Re[3]: несложный ФЯ с человеческим лицом
От: nikov США http://www.linkedin.com/in/nikov
Дата: 26.03.08 07:10
Оценка:
Здравствуйте, dmz, Вы писали:

N>>Посмотрите F#.


dmz>А он есть под Mono?


Да.

http://research.microsoft.com/fsharp/manual/compiler.aspx (последний параграф)
http://www.palladiumconsulting.com/blog/sebastian/2007/04/f-mono-and-mac-os-x-warmups.html
Re[3]: несложный ФЯ с человеческим лицом
От: Mirrorer  
Дата: 26.03.08 07:10
Оценка:
Здравствуйте, dmz, Вы писали:

N>>Посмотрите F#.


dmz>А он есть под Mono?

Можно посмотреть
здесь
Re[3]: несложный ФЯ с человеческим лицом
От: dotneter  
Дата: 26.03.08 07:35
Оценка:
dmz>А он есть под Mono?

http://research.microsoft.com/fsharp/release.aspx
Talk is cheap. Show me the code.
Re: несложный ФЯ с человеческим лицом
От: Gaperton http://gaperton.livejournal.com
Дата: 26.03.08 08:08
Оценка:
Здравствуйте, dmz, Вы писали:

dmz>Хочется что-то вроде питона, но с настоящими list-comprehensions, паттерн-матчингом (особенно), гарантированной развертки tail recursion. Эрланг кажется тяжеловесным для этой задачи, плюс тормозной файловый ввод-вывод и регекспы / слабая поддержка строк.


Для ввода-вывода надо пользоваться file — он не тормозной. Тормозной — только io. Насчет быстрых регэкспов и бинарных строк — скоро (в ближайшем релизе — ждать осталось месяцы) выйдет EEP9, который сильно изменит арифметику по строкам и регэкспам.

dmz>Идеально, конечно, было бы что-то вроде питона, но декларативный и с нужными фичами.


Собственно, это как раз Эрланг. Либо, если что-то вроде питона — то бери Схему.
Re[2]: несложный ФЯ с человеческим лицом
От: dr.Chaos Россия Украшения HandMade
Дата: 26.03.08 08:33
Оценка:
Gaperton wrote:

> Здравствуйте, dmz, Вы писали:

>
> dmz>Хочется что-то вроде питона, но с настоящими list-comprehensions,
> паттерн-матчингом (особенно)
, гарантированной развертки tail
> recursion. Эрланг кажется тяжеловесным для этой задачи, плюс тормозной
> файловый ввод-вывод и регекспы / слабая поддержка строк.
> Для ввода-вывода надо пользоваться file — он не тормозной. Тормозной -
> только io. Насчет быстрых регэкспов и бинарных строк — скоро (в ближайшем
> релизе — ждать осталось месяцы) выйдет EEP9, который сильно изменит
> арифметику по строкам и регэкспам.
>
> dmz>Идеально, конечно, было бы что-то вроде питона, но декларативный и с
> нужными фичами.
>
> Собственно, это как раз Эрланг. Либо, если что-то вроде питона — то бери
> Схему.

А как в Scheme с выделенным?
Posted via RSDN NNTP Server 2.1 beta
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Re[3]: несложный ФЯ с человеческим лицом
От: Gaperton http://gaperton.livejournal.com
Дата: 26.03.08 09:41
Оценка:
Здравствуйте, dr.Chaos, Вы писали:

>> Собственно, это как раз Эрланг. Либо, если что-то вроде питона — то бери

>> Схему.

DC>А как в Scheme с выделенным?


Петтерн-матчинг какой-то, кажется, в последних версиях спецификации схемы был. А насчет компрехэншнс — не знаю, но там его вероятно можно прикрутить. макросы, типа, и все такое.

Ну, напильником обработать эту схему, и нормально пойдет. Хотя я бы в данной ситуации взял Эрланг, а не искал странного.
Re[4]: несложный ФЯ с человеческим лицом
От: dmz Россия  
Дата: 26.03.08 10:11
Оценка:
G>Петтерн-матчинг какой-то, кажется, в последних версиях спецификации схемы был. А насчет компрехэншнс — не знаю, но там его вероятно можно прикрутить. макросы, типа, и все такое.

Нунафик. Хаскел (который оказался похож на эрланг) или эрланг, действительно.

G>Ну, напильником обработать эту схему, и нормально пойдет. Хотя я бы в данной ситуации взял Эрланг, а не искал странного.


Да возможно с ним все не так страшно, хотя как-то рука не поднимается его использовать для задач анализа данных и вообще рассчетных задач.
Re[4]: несложный ФЯ с человеческим лицом
От: dr.Chaos Россия Украшения HandMade
Дата: 26.03.08 10:25
Оценка:
Gaperton wrote:

>>> Собственно, это как раз Эрланг. Либо, если что-то вроде питона — то бери

>>> Схему.
>
> DC>А как в Scheme с выделенным?
>
> Петтерн-матчинг какой-то, кажется, в последних версиях спецификации схемы
> был. А насчет компрехэншнс — не знаю, но там его вероятно можно
> прикрутить. макросы, типа, и все такое.
>
> Ну, напильником обработать эту схему, и нормально пойдет. Хотя я бы в
> данной ситуации взял Эрланг, а не искал странного.

Просто для обучения Scheme очень хорошо подходит, но докручивать руками лист
компрехеншнс и паттерн-матчинг в целях обучения это жесть . Я понимаю что
русские программисты настолько суровы... но всё же . Поэтому и
посоветовал Хаскел, синтаксис у него простой и понятный, возможно даже
проще и понятней чем у Ерланга, но за счёт классов типов, монад,
ленивости ... более сложен в освоении.

Хотя для целей обучения советовал бы изучать параллельно 2 ФЯ: 1 со
статической типизацией другой с динамической, для сравнения подходов.
Posted via RSDN NNTP Server 2.1 beta
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Re: несложный ФЯ с человеческим лицом
От: _pk_sly  
Дата: 26.03.08 12:12
Оценка:
Здравствуйте, dmz, Вы писали:

dmz>Хочется что-то вроде питона, но с настоящими list-comprehensions, паттерн-матчингом (особенно), гарантированной развертки tail recursion. Эрланг кажется тяжеловесным для этой задачи, плюс тормозной файловый ввод-вывод и регекспы / слабая поддержка строк. OCaml кажется несколько сложным, т.е. он явно сложнее эрланга. А есть еще что-нибудь (про nemerle знаю, но оно, судя по всему пока нестабильно?)


странно, но именно Nemerle и приходит на ум.

слухи о его нестабильности несколько преувеличены. это же открытый проект, про его баги говорят и его баги фиксят.
в компиляторе Visual C++ тоже есть баги. о них все знают, молчат и ждут сервис-паков но он не считается "нестабильным".

что до самого языка Nemerle, то он достаточно стабилен (в отличии от, например, D).
Re[2]: несложный ФЯ с человеческим лицом
От: Аноним  
Дата: 26.03.08 13:44
Оценка:
Здравствуйте, Zert, Вы писали:

Z>Всё-таки, посмотри OCaml. Он, естественно, сложнее Erlang'а (проще его некуда), но он имеет самое человечное лицо из всех языков ФП.


Простите, коллега, но лицо OCaml напоминает лицо человека, умершего от сифилиса.
Re[3]: несложный ФЯ с человеческим лицом
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 26.03.08 15:19
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Простите, коллега, но лицо OCaml напоминает лицо человека, умершего от сифилиса.


Это почему так?
Re[4]: несложный ФЯ с человеческим лицом
От: Аноним  
Дата: 26.03.08 15:51
Оценка: -2
Здравствуйте, D. Mon, Вы писали:

DM>Здравствуйте, Аноним, Вы писали:


А>>Простите, коллега, но лицо OCaml напоминает лицо человека, умершего от сифилиса.


DM>Это почему так?


Вы посмотрите на дизайн языка. Мне он больше всего напоминает перл. Такое ощущение, что фичи добавлялись в язык по желаниию левой задней ноги собаки разрабочика, совершенно не думая о том, как они лягут на уже существующие черты. В результате получается не продуманная, стройная система, основанная на теории (как, например, Haskell ),а эклектичная помойка из приблуд, которые могли кому-то однажды пригодиться. Для обучения его нельзя применять под страхом смерти. Впрочем, меня щас перенесут в СВ...
Re[5]: несложный ФЯ с человеческим лицом
От: Gaperton http://gaperton.livejournal.com
Дата: 26.03.08 19:13
Оценка:
Здравствуйте, dmz, Вы писали:

dmz>Да возможно с ним все не так страшно, хотя как-то рука не поднимается его использовать для задач анализа данных и вообще рассчетных задач.


Рассчетных задач, говоришь? Из функциональных — Хаскель или OCaml. OCaml для именно рассчетных задач должен подойти лучше.
Re: несложный ФЯ с человеческим лицом
От: BulatZiganshin  
Дата: 26.03.08 21:56
Оценка:
Здравствуйте, dmz, Вы писали:

как тут недавно упоминали, Q — хаскель для начинаюших. начни с http://switch.dl.sourceforge.net/sourceforge/q-lang/qnutshell-0.5.pdf , а далее http://q-lang.sourceforge.net

ещё один:
Kaya is a compiled scripting language, distributed for free under the
GNU GPL. It is statically typed, meaning that the compiler will help
you by checking for consistent variable usage and reporting errors
before you run your program. It also uses type inference, meaning that
the types of variables are worked out by the compiler, so there is no
need for you to declare local variables, or use type casts.

см. http://kayalang.org/tutorial


вообще, было бы интересно написать такой учебник по хаскелю, чтоб люди перестали его бояться
Люди, я люблю вас! Будьте бдительны!!!
Re[2]: несложный ФЯ с человеческим лицом
От: Schade Россия  
Дата: 26.03.08 22:31
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>вообще, было бы интересно написать такой учебник по хаскелю, чтоб люди перестали его бояться


Это точно. Он не столько сложен, сколько непривычен.
А вот учебника "с человеческим лицом" я так и не видел. И практически все прочитавшие то что есть остаются при твердом убеждении, что Haskell — какой-то фанатичный неудобный язык, а монады — всего лишь идиотский способ имитации императивности.
Re[2]: несложный ФЯ с человеческим лицом
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 27.03.08 03:23
Оценка: +1
Здравствуйте, BulatZiganshin, Вы писали:

BZ>вообще, было бы интересно написать такой учебник по хаскелю, чтоб люди перестали его бояться


А может в самом языке (или его реализации) есть что-то, чего люди боятся? Тогда учебник не поможет.
Например, люди ищут реальные примеры нетривиальных программ, видят darcs, видят жалобы на его тормоза и пугаются.
Или слышат от thesz о непобежденных мемориликах и опять пугаются..
Re[5]: несложный ФЯ с человеческим лицом
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 27.03.08 03:26
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Вы посмотрите на дизайн языка. Мне он больше всего напоминает перл. Такое ощущение, что фичи добавлялись в язык по желаниию левой задней ноги собаки разрабочика, совершенно не думая о том, как они лягут на уже существующие черты.


Если рассматривать ядро языка, то там все стройно и красиво. Но когда начинаются ООП и т.п. — тут действительно можно с Вами согласиться.
Re[3]: несложный ФЯ с человеческим лицом
От: Code Digger Грузия  
Дата: 27.03.08 04:14
Оценка: +1
Здравствуйте, Schade, Вы писали:

S>Здравствуйте, BulatZiganshin, Вы писали:


BZ>>вообще, было бы интересно написать такой учебник по хаскелю, чтоб люди перестали его бояться


S>Это точно. Он не столько сложен, сколько непривычен.

S>А вот учебника "с человеческим лицом" я так и не видел. И практически все прочитавшие то что есть остаются при твердом убеждении, что Haskell — какой-то фанатичный неудобный язык, а монады — всего лишь идиотский способ имитации императивности.

Странно, все учебники (и даже Language Report или Reference — не помню), которые я читал, были на удивление простыми и понятными. Даже введение в монады, где давались азы теории категорий, было предельно простым, не смотря на то, что написано по-английски .
Так что, у меня быстро сформировалось убеждение, что Haskell — фантастически удобный, гибкий и мощный язык, наиболее выдающиеся возможности которого, правда, без вдумчивого изучения понять и применять невозможно.
Re: несложный ФЯ с человеческим лицом
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 27.03.08 05:17
Оценка:
Сам пользуюсь Немерлем в основном именно для таких задач. Язык отлично подходит по всем критериям. Компилятор вполне стабилен, а интеграцией я не пользуюсь. Я себе в Виме настроил подсветку, отступы, компиляцию и запуск программ из редактора.

Пока не знаешь язык, пишешь почти также как на C#. Новые возможности начинаешь применять по мере обучения. Написание скриптов облегчается тем, что не обязательно создавать класс и функцию Main.

using Nemerle.Utility;
using System.IO;
using System;

def SumLines(fileName)
{
    using (reader = File.OpenText(fileName))
    {
        mutable line = reader.ReadLine();
        while (null != line)
        {
            def sum = line
                .Split(array[' '])
                .Map(int.Parse)
                .Fold(0, (x, sum) => x + sum);
            Console.WriteLine(sum);
            line = reader.ReadLine();
        }
    }
}

SumLines("test.txt");
Ce n'est que pour vous dire ce que je vous dis.
Re[4]: несложный ФЯ с человеческим лицом
От: Schade Россия  
Дата: 27.03.08 08:32
Оценка:
Здравствуйте, Code Digger, Вы писали:

CD>Странно, все учебники (и даже Language Report или Reference — не помню), которые я читал, были на удивление простыми и понятными. Даже введение в монады, где давались азы теории категорий, было предельно простым, не смотря на то, что написано по-английски .


Ну, насчет "практически все прочитавшие", да, я погорячился. Но вот если посмотреть сообщения на этом форуме — остается именно такое впечатление (хотя возможно это и один человек чувство массовки создает и кажется я даже знаю какой человек )

CD>Так что, у меня быстро сформировалось убеждение, что Haskell — фантастически удобный, гибкий и мощный язык, наиболее выдающиеся возможности которого, правда, без вдумчивого изучения понять и применять невозможно.

И это тоже существенно. Не каждому захочется вдумчиво изучать.
Re[3]: несложный ФЯ с человеческим лицом
От: realloc Россия  
Дата: 27.03.08 09:16
Оценка: :)
Здравствуйте, Schade, Вы писали:

S>Здравствуйте, BulatZiganshin, Вы писали:


BZ>>вообще, было бы интересно написать такой учебник по хаскелю, чтоб люди перестали его бояться


S>Это точно. Он не столько сложен, сколько непривычен.

S>А вот учебника "с человеческим лицом" я так и не видел. И практически все прочитавшие то что есть остаются при твердом убеждении, что Haskell — какой-то фанатичный неудобный язык, а монады — всего лишь идиотский способ имитации императивности.

А разве это не так? Ухожу, ухожу...
Re[4]: несложный ФЯ с человеческим лицом
От: dr.Chaos Россия Украшения HandMade
Дата: 27.03.08 10:02
Оценка: +1 :))) :))) :)
Здравствуйте, realloc, Вы писали:

S>>Это точно. Он не столько сложен, сколько непривычен.

S>>А вот учебника "с человеческим лицом" я так и не видел. И практически все прочитавшие то что есть остаются при твердом убеждении, что Haskell — какой-то фанатичный неудобный язык, а монады — всего лишь идиотский способ имитации императивности.

R>А разве это не так? Ухожу, ухожу...


Вспоминается анекдот:

Сидят в одной камере зоофил, садист и мазохист.
Зоофил: — Сейчас бы кошечку...
Садист: — Ага, плоскогубцами ...
Мазохист: — Мяу?

Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Re[6]: несложный ФЯ с человеческим лицом
От: Аноним  
Дата: 27.03.08 10:14
Оценка: +1
Здравствуйте, D. Mon, Вы писали:

DM>Если рассматривать ядро языка, то там все стройно и красиво. Но когда начинаются ООП и т.п. — тут действительно можно с Вами согласиться.


Ядро языка это ML. Но раз уж автор просит для изучения, то ИМХО с ML и надо начинать, а на OCaml можно съехать позже, при необходимости. Иначе просто будет не понять, где ядро, а где привнесённое.
Re[2]: несложный ФЯ с человеческим лицом
От: Roman Odaisky Украина  
Дата: 31.03.08 13:47
Оценка: -1
Здравствуйте, Don Reba, Вы писали:

DR>SumLines("test.txt");


Флеймить так флеймить.
std::cout << std::accumulate(std::istream_iterator<int>(std::cin), std::istream_iterator<int>(), 0) << std::endl;
До последнего не верил в пирамиду Лебедева.
Re[3]: несложный ФЯ с человеческим лицом
От: _pk_sly  
Дата: 31.03.08 13:52
Оценка: -1
Здравствуйте, Roman Odaisky, Вы писали:

RO>Флеймить так флеймить.


Говорят
Автор: Mirrorer
Дата: 27.03.08
, надо пользоваться тем, что встроено в язык
Re[4]: несложный ФЯ с человеческим лицом
От: Roman Odaisky Украина  
Дата: 31.03.08 14:09
Оценка: +4
Здравствуйте, _pk_sly, Вы писали:

RO>>Флеймить так флеймить.


__>Говорят
Автор: Mirrorer
Дата: 27.03.08
, надо пользоваться тем, что встроено в язык :)


А я чем? Там «std::» для мебели, по-твоему?
До последнего не верил в пирамиду Лебедева.
Re[3]: несложный ФЯ с человеческим лицом
От: Mirrorer  
Дата: 31.03.08 14:22
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Флеймить так флеймить.


Действительно, добавим изврата
awk '{sum=0; for(i=1;i<=NF;i++) sum += $i; print sum }' t.txt
Re[4]: несложный ФЯ с человеческим лицом
От: Roman Odaisky Украина  
Дата: 31.03.08 15:01
Оценка:
Здравствуйте, Mirrorer, Вы писали:

RO>>Флеймить так флеймить.


M>Действительно, добавим изврата

M>
M>awk '{sum=0; for(i=1;i<=NF;i++) sum += $i; print sum }' t.txt
M>

Разве это изврат? Вот zsh — изврат так изврат:
read s && echo $((${s:gs: :+:}))

Только что общего имеет мой код на C++ с извратом?
До последнего не верил в пирамиду Лебедева.
Re[3]: несложный ФЯ с человеческим лицом
От: Tonal- Россия www.promsoft.ru
Дата: 31.03.08 15:15
Оценка: +1
Здравствуйте, Roman Odaisky, Вы писали:
RO>Флеймить так флеймить.
RO>
std::cout << std::accumulate(std::istream_iterator<int>(std::cin), std::istream_iterator<int>(), 0) << std::endl;

Эт получается сумма всех чисел в файле, а нада суммы по строчкам:
using namespace std;

while (cin) {
  string line;
  getline(cin, line);
  cout<<accumulate(istream_iterator<int>(istringstream(line)), istream_iterator<int>(), 0)<<endl;
}
... << RSDN@Home 1.2.0 alpha 4 rev. 1047>>
Re[5]: несложный ФЯ с человеческим лицом
От: Mirrorer  
Дата: 01.04.08 05:57
Оценка: :)
Здравствуйте, Roman Odaisky, Вы писали:

RO>>>Флеймить так флеймить.


RO>
read s && echo $((${s:gs: :+:}))


RO>Только что общего имеет мой код на C++ с извратом?

К коду на С++ никаких претензиц. Изврат был предложен исключительно в желании пофлеймить
Re: несложный ФЯ с человеческим лицом
От: Аноним  
Дата: 02.04.08 01:04
Оценка:
На линуксе я пользуюсь sbcl (common lisp)
паттерн-матчинг прикручивается библиотекой http://www.cliki.net/pcond ну и там же на сайте можно list-comprehensions найти.
Как замена питона для скриптинга вполне годится.
Практичный язык с кучей библиотек.
Синтаксис лисп — куда уж легче.

На винде можно попробовать clisp или lispworks (к сожалению trial)

Еще есть clojure.org новенький язык лисп семейства на JVM
Из него все библиотеки java вызываются как родные.
Re[5]: несложный ФЯ с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.04.08 09:07
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

__>>Говорят
Автор: Mirrorer
Дата: 27.03.08
, надо пользоваться тем, что встроено в язык


RO>А я чем? Там «std::» для мебели, по-твоему?


Думаю, это он о том, что решение скорее не на языке, а в библиотеке. При наличии подобных функций в библиотеке решение, скажем на C# выглядело бы примерно так:
Write(IStreamIterator<int>(cin).Sum());

И то приходится учесть, что решена не та задача
Автор: Tonal-
Дата: 31.03.08
.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: несложный ФЯ с человеческим лицом
От: Roman Odaisky Украина  
Дата: 02.04.08 09:46
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Думаю, это он о том, что решение скорее не на языке, а в библиотеке. При наличии подобных функций в библиотеке решение, скажем на C# выглядело бы примерно так:

VD>
Write(IStreamIterator<int>(cin).Sum());

Ничего себе! Влад заявляет, что стандартная библиотека C++ богаче, чем в C#! Куда катится мир?
До последнего не верил в пирамиду Лебедева.
Re[4]: несложный ФЯ с человеческим лицом
От: Code Digger Грузия  
Дата: 03.04.08 03:03
Оценка:
Простите, я кажется упустил тот момент, когда удалили комментарии про Хаскель и Джей?

Это с чем-то связано?

А то я хотел сохранить себе страничку с ними и поизучать код на досуге...
Re[7]: несложный ФЯ с человеческим лицом
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 03.04.08 05:32
Оценка: +1
Roman Odaisky,

RO> Ничего себе! Влад заявляет, что стандартная библиотека C++ богаче, чем в C#! Куда катится мир?


Если функции нет, то её нет, это так сказать объективная реальность. Так что ничего удивительного

[off]Роман, а почему в подписи не написать чуть компактнее: !73x [/off]
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[2]: несложный ФЯ с человеческим лицом
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 03.04.08 07:00
Оценка:
Здравствуйте, nikov, Вы писали:

N>Посмотрите F#.


N>Гибридный (функционально-императивный) язык на платформе .NET, родственный с OCaml.

N>Есть карринг, оптимизация хвостовой рекурсии, автоматическая генерализация, list/sequence comprehensions, pattern matching. Планируют приделать классы типов.

N>Microsoft планирует включать его в стандартную поставку Visual Studio, сейчас поддержка в Visual Studio ставится отдельным инсталлятором.


С наскока не нашел, в F# есть аналог полиморфных вариантов OCalml?
Re[7]: несложный ФЯ с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.04.08 12:46
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Ничего себе! Влад заявляет, что стандартная библиотека C++ богаче, чем в C#! Куда катится мир?


Ага. Богаче. Ровно на один класс. Вот только о том, что в ней нехватает даже говорить грустно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: несложный ФЯ с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.04.08 12:53
Оценка:
Здравствуйте, dmz, Вы писали:

dmz>Идеально, конечно, было бы что-то вроде питона, но декларативный и с нужными фичами.


Простой ФЯ — это MS Excel. А любой язык потому и существует, что на нем можно решать не тривиальные задачи. А раз это так, то простым он уже не будет. Ну, или нужно дискутировать о том что значит "простой" и для кого.

Потом Питон очень даже не плохо выступает в роли ФЯ. В нем нет только паттерн-матчинга и алгеброических типов. Ну, их и в Лиспе нет (самопалы не всчет, их и на Питоне можно сворганить).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: несложный ФЯ с человеческим лицом
От: dmz Россия  
Дата: 03.04.08 14:08
Оценка: -1
VD>Простой ФЯ — это MS Excel. А любой язык потому и существует, что на нем можно решать не тривиальные задачи. А раз это так, то простым он уже не будет. Ну, или нужно дискутировать о том что значит "простой" и для кого.

Ну вот руби и питон простые, а задачи позволяют решать любые. Вот эрланг простой, а вообще функциональный при том. Собственно, эрланг был бы супер, если бы быстрый базовый ввод/вывод и поддержка строк в языке.

VD>Потом Питон очень даже не плохо выступает в роли ФЯ. В нем нет только паттерн-матчинга и алгеброических типов. Ну, их и в Лиспе нет (самопалы не всчет, их и на Питоне можно сворганить).


Нет также оптимизации хвостовой рекурсии. А потом что значит, "только паттерн матчинга". Мне паттерн матчинг и нужен как раз. И вообще на нем писать в функциональном стиле неудобно. И вообще после эрланга просто колбасит, так не хватает матчинга. Очень красивые решения с ним получаются.
Re[5]: несложный ФЯ с человеческим лицом
От: Kisloid Мухосранск  
Дата: 04.04.08 10:56
Оценка:
Здравствуйте, Code Digger, Вы писали:

CD>А то я хотел сохранить себе страничку с ними и поизучать код на досуге...


Ага, ты был бы удивлен увидев там мой код на J, т.к. я там с умным видом написал какую-то белиберду, а никто таки кажется и не заметил
... << RSDN@Home 1.2.0 alpha rev. 786>>
((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))
Re[6]: несложный ФЯ с человеческим лицом
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 04.04.08 13:37
Оценка:
Здравствуйте, Kisloid, Вы писали:

K>Ага, ты был бы удивлен увидев там мой код на J, т.к. я там с умным видом написал какую-то белиберду, а никто таки кажется и не заметил


Это потому что на J все выглядит как белиберда, никто даже не пытается прочитать.
Re[6]: несложный ФЯ с человеческим лицом
От: Cyberax Марс  
Дата: 04.04.08 14:25
Оценка: +1 :))) :)
Здравствуйте, Kisloid, Вы писали:

CD>>А то я хотел сохранить себе страничку с ними и поизучать код на досуге...

K>Ага, ты был бы удивлен увидев там мой код на J, т.к. я там с умным видом написал какую-то белиберду, а никто таки кажется и не заметил
А ты проверял? Может оно работает!
Sapienti sat!
Re[3]: несложный ФЯ с человеческим лицом
От: LaPerouse  
Дата: 11.04.08 09:29
Оценка:
Здравствуйте, dmz, Вы писали:


VD>>Простой ФЯ — это MS Excel. А любой язык потому и существует, что на нем можно решать не тривиальные задачи. А раз это так, то простым он уже не будет. Ну, или нужно дискутировать о том что значит "простой" и для кого.


dmz>Ну вот руби и питон простые, а задачи позволяют решать любые. Вот эрланг простой, а вообще функциональный при том. Собственно, эрланг был бы супер, если бы быстрый базовый ввод/вывод и поддержка строк в языке.


Не только. Возможность применения в guard-expressions только bif-ов убивает. Нафига тогда эти guard-ы сдались?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[3]: несложный ФЯ с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.04.08 09:29
Оценка:
Здравствуйте, dmz, Вы писали:

dmz>Ну вот руби и питон простые, а задачи позволяют решать любые.


Какие они к черту простые? Там одни навороты по метапрограммированию чего стоит? А разные континюэшоны и т.п.? На то чтобы это все смочь понять и освоить применение на практике уйдет несколько лет... если вообще всем по зубам будет.

Ну, и уж все задачи они точно не позволяют решать. Как минимум закрыт весь класс высокопроизводительных вычислений.

dmz>Вот эрланг простой, а вообще функциональный при том. Собственно, эрланг был бы супер, если бы быстрый базовый ввод/вывод и поддержка строк в языке.


Просто? Отнюдь. Эрланг — язык одной идеи — идеи легких процессов коммуникация между которыми производится по средством сообщений. Он не просто, он скорее специализированный. И понять его специфику не так то просто.

VD>>Потом Питон очень даже не плохо выступает в роли ФЯ. В нем нет только паттерн-матчинга и алгеброических типов. Ну, их и в Лиспе нет (самопалы не всчет, их и на Питоне можно сворганить).


dmz>Нет также оптимизации хвостовой рекурсии.


Вот тут ничего не могу сказать, только даже если это так, то особо мешать программированию в функциональном стиле это мешать не должно.

dmz>А потом что значит, "только паттерн матчинга". Мне паттерн матчинг и нужен как раз. И вообще на нем писать в функциональном стиле неудобно. И вообще после эрланга просто колбасит, так не хватает матчинга. Очень красивые решения с ним получаются.


Дык матчинг уже не просто. Согласен, что вещь полезная, но полезная для реальной работы, а не как финтифлюшка для изучения.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: несложный ФЯ с человеческим лицом
От: Mamut Швеция http://dmitriid.com
Дата: 19.04.08 09:40
Оценка: +1
dmz>>Ну вот руби и питон простые, а задачи позволяют решать любые.

VD>Какие они к черту простые? Там одни навороты по метапрограммированию чего стоит? А разные континюэшоны и т.п.? На то чтобы это все смочь понять и освоить применение на практике уйдет несколько лет... если вообще всем по зубам будет.


Как и немерле, они позволяют к этим вещам даже и не прикасаться Начинать с простого, продвигаться все выше и выше
... << RSDN@Home 1.2.0 alpha 4 rev. 1064>>


dmitriid.comGitHubLinkedIn
Re[4]: несложный ФЯ с человеческим лицом
От: Аноним  
Дата: 19.04.08 14:30
Оценка: -1
Здравствуйте, VladD2, Вы писали:

VD>Какие они к черту простые? Там одни навороты по метапрограммированию чего стоит? А разные континюэшоны и т.п.? На то чтобы это все смочь понять и освоить применение на практике уйдет несколько лет... если вообще всем по зубам будет.


"разные континюэшоны" — это общая концепция, к конкретному языко отношение имеющая слабое.

всё равно что сказать что язык Х — трудный "из за всяких там лямбд, замыканий и т.п."
Re[5]: несложный ФЯ с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.04.08 21:27
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Как и немерле, они позволяют к этим вещам даже и не прикасаться Начинать с простого, продвигаться все выше и выше


Си тоже позволяет писать примитивные, детские примеры — это не делает этот язык проще.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: несложный ФЯ с человеческим лицом
От: Mamut Швеция http://dmitriid.com
Дата: 20.04.08 09:16
Оценка:
M>>Как и немерле, они позволяют к этим вещам даже и не прикасаться Начинать с простого, продвигаться все выше и выше

VD>Си тоже позволяет писать примитивные, детские примеры — это не делает этот язык проще.


Тогда, думаю, надо определить категории простоты

Например, на Питоне легче начать программировать, чем на С (потому что нет связки код->компилятор->линкер и есть REPL)

С проще Питона, потмоу что там нет различных высокоуровневых фич

Питон проще С++, потому что высокоуровневые фичи достигаются в нем проще/понятнее, чем в С++

И так далее
... << RSDN@Home 1.2.0 alpha 4 rev. 1084>>


dmitriid.comGitHubLinkedIn
Re[7]: несложный ФЯ с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.04.08 13:09
Оценка: 78 (4) +5
Здравствуйте, Mamut, Вы писали:

M>Тогда, думаю, надо определить категории простоты


Читаем внимательно:
http://rsdn.ru/forum/message/2901845.1.aspx
Автор: VladD2
Дата: 03.04.08

Простой ФЯ — это MS Excel. А любой язык потому и существует, что на нем можно решать не тривиальные задачи. А раз это так, то простым он уже не будет. Ну, или нужно дискутировать о том что значит "простой" и для кого.


M>Например, на Питоне легче начать программировать, чем на С (потому что нет связки код->компилятор->линкер и есть REPL)


Лично я начинал программировать на C. И с полной уверенностью заявляю, что — это неправда. Даже в начале 90-ых компиляторы прекрасно позволяли написать:
compiler file-name.c

и получить на выходе file-name.exe или file-name.com.
Если взять любую IDE (которых и тогда хватало, а сейчас уже завались просто), то все что нужно будет сделать новичку — это освоить создание нового проекта (Ctrl+Shift+N в VS и одно нажатие на Enter после этого) и нажатие на кнопку F5/F9 для запуска кода на выполнение/отладку.

M>С проще Питона, потмоу что там нет различных высокоуровневых фич

M>Питон проще С++, потому что высокоуровневые фичи достигаются в нем проще/понятнее, чем в С++

По сравнению с С++ любой язык кажется простым. А вот скажем если сравнить Питон с Явой или Шарпом, то лично я бы предпочел последние. Многое в Питоне мне кажется непонятным и неудобный.

Но опять же это все личное мнение. Если бы я программировал на Питоне 10 лет к ряду по 8 часов в день, а C# (скажем) пару раз запустил бы за это время, то Питон для меня был бы верхом простоты. Но если бы я программировал бы на С++, а Питон в глаза не видел (как оно и было), то "простым" для меня был бы С++.

Так что личные оценки надо опускать. Простота, на мой взгляд может рассматриваться толко в двух аспектах.
1. Простота начального освоения человеком никогда на нем не работавшем (без бэкраунда вообще).
2. Простота освоения 99% фич, т.е. то насколько сложно эффективно применять этот язык в реальных проектах задействуя, при этом, самые продвинутые фичи.

Так вот по первому пункту Питон конечно будет хорош. Но по нему многие другие будут не хуже. Тот же Немерле проектировался так, что вход в него очень прост и если и отличается от Питона, то только в сторону еще большей простоты.

Ну, а по второму критерию Питон откровенно сложный язык.

Кроме того обучаемый может уже иметь некоторые знания в других языках. С большой долей уверенности можно утверждать, что это будет линейка С-подобных языков. И тут Питон получается в полном пролете, так как у него не только отличается синтаксис, но на нем крайне тяжело писать в "стиле С".

ЗЫ

А вообще, если бы те кто возражают сначала читали бы предысторию, то многие вопросы отпали бы сами собой. Я как раз и сказал, что на Питоне вполне возможно осваивать азы ФП. И что нет смысла искать мифический "простой ФЯ" если человек знаком с Питоном (или скажем C#-ом).

Скажу больше... Понимание ФП, как в прочем, и не понимание не имеет отношения к языку! Не понимать ФП с огромным успехом можно на Лиспе! А понимать на С! ФП — это общий взгляд на решение проблем стоящим перед программистом. Именно по этому это парадигма, а не паттерн.

Так что мой ответ будет простым. Простой ФЯ — это любой ЯП мало мальски поддерживающих ФП (лябд и замыканий достаточно) и при этом знакомый тому человеку который хочет изучить ФП. Для людей знакомых с Питоном — это питон. Для людей знакомых с Руби — это руби. Для людей знакомых с Явой или С++ — это ... C# 3.0, я думаю, так как все же в этих языках поддержка ФП хотя и имеется, но очень слабая. Она скорее способна вызвать отвращение к ФП нежели помочь его освоить. Конечно полноценные ФП языки вроде Хаскеля, Эрланга или того же Немерла дадут больше, но на начальном этапе они никак не могут рассматриваться в качестве простых. Так как прийдется осваивать столько новых концепций, что результат скорее всего будет отрицательным.

В прочем многое зависит от качества обучения и умения человека учиться. Те кто хотели сами с нуля освоили Хаскели. А те кто не хотели или кому не повезло с учителем не освоили полноценно и С++.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: несложный ФЯ с человеческим лицом
От: rv82 Россия rv82.blogspot.com
Дата: 23.04.08 01:35
Оценка: 2 (1)
Здравствуйте, dmz, Вы писали:

dmz>Привет,



dmz>а нет ли ФЯ с относительно несложным синтаксисом, в первую очередь для обучения, который бы годился, как замена питона для всякого рода скриптинга, ну и например, что бы на нем писать всякого рода вычислительные задачи ( кластеризация информации на странице, etc).


dmz>Хочется что-то вроде питона, но с настоящими list-comprehensions, паттерн-матчингом (особенно), гарантированной развертки tail recursion. Эрланг кажется тяжеловесным для этой задачи, плюс тормозной файловый ввод-вывод и регекспы / слабая поддержка строк. OCaml кажется несколько сложным, т.е. он явно сложнее эрланга. А есть еще что-нибудь (про nemerle знаю, но оно, судя по всему пока нестабильно?)


dmz>Идеально, конечно, было бы что-то вроде питона, но декларативный и с нужными фичами.


Изучайте Standard ML. Он несравненно проще Ocaml'a и Haskell'a, при этом не уступает им по возможностям (сам я пользуюсь SML/NJ). Многие рекомендуют начинать изучение с Moscow ML. Я бы не рекомендовал этого делать, т.к. когда дойдёте до изучения модулей, начнутся проблемы с компиляцией. Лучше сразу выбрать SML/NJ или MLton (если у вас Linux).
Re[2]: несложный ФЯ с человеческим лицом
От: FR  
Дата: 26.04.08 14:01
Оценка:
Здравствуйте, rv82, Вы писали:


R>Изучайте Standard ML. Он несравненно проще Ocaml'a и Haskell'a, при этом не уступает им по возможностям (сам я пользуюсь SML/NJ). Многие рекомендуют начинать изучение с Moscow ML. Я бы не рекомендовал этого делать, т.к. когда дойдёте до изучения модулей, начнутся проблемы с компиляцией. Лучше сразу выбрать SML/NJ или MLton (если у вас Linux).


Угу ML для обучения очень хорош.
Но к сожалению, не очень хорош для повседневной работы.
MLTon кстати вполне нормально и под windows пускается (cygwin версия)
Re[3]: несложный ФЯ с человеческим лицом
От: crable США  
Дата: 27.04.08 06:09
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, rv82, Вы писали:


FR>Угу ML для обучения очень хорош.

FR>Но к сожалению, не очень хорош для повседневной работы.
FR>MLTon кстати вполне нормально и под windows пускается (cygwin версия)

а можно немного подробнее про "не очень хорош для повседневной работы"?
The last good thing written in C was Franz Schubert's Symphony No. 9.
Re[4]: несложный ФЯ с человеческим лицом
От: FR  
Дата: 27.04.08 10:22
Оценка: 4 (1)
Здравствуйте, crable, Вы писали:

C>а можно немного подробнее про "не очень хорош для повседневной работы"?


Мне показалась у него та же проблема что и у C++ несколько не полностью
совместимых реализаций и многие библиотеки только под конкретную реализацию.
Ну и вообще в сравнении с тем же Ocaml'ом очень бедные бибилотеки, нет никакой
практически подержки. Кстати как язык мне Standard ML кажется более симпатичным
чем Ocaml, но для работы я выбрал бы именнно Ocaml.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.