Re[10]: ocaml срочно!!!
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 17.05.07 14:25
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А> Я в сторону Nemerle не шуганусь ни за какие коврижки,


Почему?
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[15]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 14:45
Оценка:
Здравствуйте, <Аноним>, Вы писали:

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


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

G>> Поэтому глупо их противопоставлять.


А> Ага, ага, а ещё C++ и C-препроцессор — это тоже всё один язык. И GNU autotools — конечно же тоже часть языка C++, как же без этого.


Дык это части одного языка. На них есть спецификация. Они стандартизованы.

А> Если они не дураки, то прекрасно поймут, о чём тут речь идёт. Не дураки ведь пользуются только строго формальными определениями.


Боюсь, они вообще ничего не поймут. Да и задачи у них другие.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 14:45
Оценка: +2
Здравствуйте, <Аноним>, Вы писали:

А> Сдаётся мне, что у вас очень серьёзные пробелы в образовании.


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


От себя сказу, что у меня лично нет сомнений в том, что Гапертон понимает что такое метапрограммирование на шаблонах С++ и что из себя пердставляет "язык шаблонов", т.е. рекурсивное воплощение шаблонов. Про Александруску он наверно тоже слышал. Так что не стоит переводить треминологический спор (бессмысленный и беспощадный) в "сам дурак".
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 15:06
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Что значит "скриптовые"?


JavaScript, например. В прочем, у МС он расширятся с помощью C#.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 15:06
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Один из бенефитов ленивости by default в том, что кода при ней меньше.


Если добавить "иногда", то соглашусь. Но к данному вопросу это отношения не имеет.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 15:06
Оценка:
Здравствуйте, Трурль, Вы писали:

А>> Я же — computer scientist, я математик, и мнение гуманитариев мне до лампочки.

Т>

It has been remarked that computer scientists would rather use each other's toothbrushes than each other's notation.


Кстати, похоже это еще одно воплошение Винипоха, Колхоза и т.п. В общем, троллит товарищь.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: ocaml срочно!!!
От: Gaperton http://gaperton.livejournal.com
Дата: 17.05.07 15:41
Оценка: +1 :))
Здравствуйте, Аноним, Вы писали:

А> Сдаётся мне, что у вас очень серьёзные пробелы в образовании. Семантика есть — значит это язык.

Не стоит вот так собеседнику говорить про "пробелы" — это проигрышно для вас, даже если бы у вас было хорошее образование. Хотя бы потому, что кроме семантики, у языка синтаксис еще должен быть. У вашего "языка темплейтов" своего синтаксиса нет, он есть у С++. Какая досада.

А> Скажите, вы, случайно, не гуманитарий? Уж больно у вас гуманитарские представления.

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

А> В формальном определении понятия "язык программирования" нет ни слова о том, куда должны быть подшиты страницы с описанием этого самого языка, чтобы он считался "самостоятельным" языком. Если можно выделить замкнутую семантику — то она и будет самостоятельным языком, чисто формально, а про всё остальное пусть волнуются гуманитарии, и желательно — где либо подальше от программирования.


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

G>>Это во первых. А во вторых — если экзаменуемый не дурак, то он прекрасно поймет, что имеют в виду, когда просят противопоставить функциональный язык императивному на примере сравнения с С++.

А> А я вот — не пойму. Я что, дурак?
Не знаю, не знаю. Вас просят противопоставить нечто языку С++ — подразумевая весь С++, включая шаблоны и прочее. Вы же берете часть С++, и противопоставляете его всему С++. И как это понимать? Вы — дурак? Или вы чего-то не знаете? Или вы просто ошиблись сгоряча, не поняв вопрос?

G>> Уж разумеется, речь идет совсем не о "языке темплейтов С++" как примере функционального языка для сравнения с С++.

А> "Разумеется" — это только для гуманитариев. Я же — computer scientist, я математик, и мнение гуманитариев мне до лампочки.
Как у нас любит говорить VladD2 — "очередное бездоказательное утверждение"
Re[18]: ocaml срочно!!!
От: anastassia  
Дата: 17.05.07 16:08
Оценка: :)))
Ого-го какие нешуточные бои развернулись!))) Все же программисты- люди увлеченные)))) И как кто-то тут правильно заметил, мозги у меня, может и не прополоскались, но уж точно офигели от всего этого объема информации! за 5 лет учебы не "постигала" так много так быстро
А позвольте поинтересоваться, вы все занимаетесь непосредственно написанием прог по жизни? или есть просто любители?
Re[18]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 16:16
Оценка:
Господа, любая реакция на действия модератора возможна только по почте на адрес moderator@rsdn.ru.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: ocaml срочно!!!
От: Дм.Григорьев  
Дата: 17.05.07 18:03
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>XSLT сомнительно. Там циклы, переменные и даже расширения (стандартом описанные) скриптовые.


Ну и что? Расширения — только функции; минимальная интеграция с внешним миром, так сказать. Переменные неизменяемые. Как следствие — возможны ленивые вычисления (уж не знаю, реализованы ли они на самом деле). Каждый шаблон можно вполне рассматривать как функцию result-tree-fragment = f (nodeset, nodeset, ...). С использованием EXSLT брюки превращаются: nodeset = exslt:node-set(result-tree-fragment). Насколько я успел понять из здешних флеймов (гы, нехилый у меня источник самообразования ), всего этого достаточно, чтобы обозвать язык чисто функциональным. Да, кстати, ООП там также не пахнет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
Re[13]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 17.05.07 18:48
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR> меня встревожила фраза "OCaml чуть чуть устарел" by geniepro. Подожду, может он ответит, что он имел ввиду под ней.


Вообще-то я вовсе не предлагаю списывать Окамл со счетов... ;о)
Просто у меня лично сложилось такое впечатление — по сравнению с Хаскеллем и Немерле Окамл действительно выглядит несколько архаично — ну так он и старше (вроде бы)...

Ну хорошо, какие сейчас новости в мире Окамля? (Кроме F#)
Какие новые идеи появляются сейчас у создателей Окамля?
Может быть, я не прав, и действительно Окамл развивается дальше? Или всё-таки он уже остановился в развитии, а следовательно — устарел?
Re[12]: ocaml срочно!!!
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 17.05.07 19:04
Оценка:
Здравствуйте, VladD2, Вы писали:

L>>Что значит "скриптовые"?


VD>JavaScript, например. В прочем, у МС он расширятся с помощью C#.


А, это я стормозил Я подумал, что ты говоришь о скриптовых переменных, скриптовых циклах и скриптовых расширениях.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[14]: ocaml срочно!!!
От: palm mute  
Дата: 17.05.07 19:05
Оценка:
Здравствуйте, geniepro, Вы писали:

G>Ну хорошо, какие сейчас новости в мире Окамля? (Кроме F#)

Да, революционных изменений в языке давно не было, периодически выходят новые релизы с багфиксами и т.п. Правда, в последнем релизе основательно переделали Camlp4 — народ возмущался. Но, с другой стороны, отсутствие экспериментальных расширений системы типов в каждом релизе не делает язык устаревшим, скорее он становится пригоднее для реальных проектов.
G>Какие новые идеи появляются сейчас у создателей Окамля?
Recent publications of project Gallium
Re[8]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 17.05.07 19:23
Оценка: 10 (1)
Здравствуйте, lomeo, Вы писали:

G>> Можно провести простейшие тесты, в которых анализатор строгости в Хаскелле позволяет сгенерировать более быстрый код, чем даже в Си (пример — функция Аккермана).


L> Что то не верится. Си всё таки считай ассемблер и есть.

L> Приведи, пожалуйста.

Конечно-конечно, с удовольствием! :о))

Celeron 1.8 (128k lvl2-cash), 512MB DualDDR266, i865

clean    : ack 3 11  : 0.72 sec  Clean 2.1.1
haskell  : ack 3 11  : 0.88 sec  GHC 6.6
f#       : ack 3 11  : 0.92 sec  F# 1.9.1.8
c        : ack 3 11  : 1.1  sec  Visual C++ 2005
c#       : ack 3 11  : 2.6  sec  Visual C# 2005
scheme   : ack 3 11  : 4.3  sec  DrScheme/MzScheme


Clean:
module ack
import StdInt

ack :: Int Int -> Int
ack m n | m == 0    = n + 1 
        | n == 0    = ack (m-1) 1
        | otherwise = ack (m-1) (ack m (n-1))

Start = ack 3 11


Haskell:
ack :: Int -> Int -> Int
ack m n | m == 0    = n + 1 
        | n == 0    = ack (m-1) 1
        | otherwise = ack (m-1) (ack m (n-1))

main = print (ack 3 11)


F#:
let rec ack (m:int) (n:int) : int =
        if m = 0 then n + 1       else
        if n = 0 then ack (m-1) 1 else
        ack (m-1) (ack m (n-1))

let st = System.DateTime.Now
let h  = ack 3 11
let ft = System.DateTime.Now
let t  = time ft - time st
do  System.Console.WriteLine ("ack 3 11 = {0} & time is {1}\n", h, t)


C:
#include <stdio.h>
#include <conio.h>
#include <Windows.h>

int ack (int m, int n)
{
    if (m == 0) return n + 1;           else
    if (n == 0) return ack (m - 1, 1);  else
    return ack (m - 1, ack (m, n - 1));
}

void main(void)
{
    DWORD st, ft;
    int   m;

    st = GetTickCount();

    m  = ack (3, 11)+1; // Единица здесь прибавляется, а затем убавляется ниже, для того,
                        // что бы шаловливый оптимизатор не заоптимизировал программу слишком сильно 
                        // и не вызвал ack до обоих вызовов GetTickCount (есть такой глюк)

    ft = GetTickCount();
    printf("%d\n\nTime is %ld  msec\n", m-1, (ft-st));
}


C#:
using System;
using System.Collections.Generic;
using System.Text;

namespace Ackerman
{
    class Program
    {
        static long Time(DateTime t)
        {
            return (((t.Hour * 60) + t.Minute) * 60 + t.Second) * 1000 + t.Millisecond;
        }

        static int Ack(int m, int n)
        {
            if (m == 0) return n + 1;         else 
            if (n == 0) return Ack(m - 1, 1); else 
            return Ack(m - 1, Ack (m, n - 1));
        }

        static void Main(string[] args)
        {
            DateTime st, ft;

            st = DateTime.Now;

            int a = Ack(3, 11);

            ft = DateTime.Now;
            Console.WriteLine("Ack(3, 11) = {0}  time = {1}", a, Time(ft) - Time(st));
        }
    }
}


Scheme:
(module a mzscheme

  (define (ack m n)
    (cond ((= m 0) (+ n 1))
          ((= n 0) (ack (- m 1) 1))
          (else    (ack (- m 1) (ack m (- n 1))))))

  (define t (current-milliseconds))

  (define a (ack 3 11))

  (printf "(ack 3 11): ~s in ~s~n" a (- (current-milliseconds) t))
)

(require a)


С программой на Scheme вообще-то в данном примере не совсем короректная ситуация — я не знаю, как указать компилятору использовать тип int32. Боюсь, здесь используется стандартный подход — пока результат влезает в определённую машинную разрядность (в DrScheme, по-моему, 64 бита), числа хранятся и оперируются в этом виде (int64), а как только выходит за пределы этих 64 бит, вычисления идут уже с BigInt.
Даже если разрядность компилятором в данном случае ограничена типом int64, то вот уже как минимум полуторократное замедление программы по сравнению с другими — ведь там везде расчёты с типом int32... То есть производительность получается примерно на уровне C#...
В программах на С# и Scheme ещё идёт и проверка на выход за пределы диапазона целых чисел, тогда как в других языках её нет — это тоже замедляет расчёты.

ЗЫ. Но вообще-то пример довольно искусственный...
Re[15]: ocaml срочно!!!
От: palm mute  
Дата: 17.05.07 19:25
Оценка:
Здравствуйте, palm mute, Вы писали:

G>>Какие новые идеи появляются сейчас у создателей Окамля?

PM>Recent publications of project Gallium

Если интересно дальнейшее развитие ML — см. проект Successor ML.
Re[8]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 17.05.07 19:47
Оценка:
Здравствуйте, VladD2, Вы писали:

VD2> Это все сказки. Практика она однозначно показывает, что добиться производитльности которую обеспечивают строгие, статически-типизированные, компилируемые языки на Хаскеле невозможно. И виной тому ленивость.


Ленивость можно подавить и будет это не сложнее, чем явное указание ленивости в строгих языках.

VD2> Что до скорости, то Common Lisp и Scheme могут компилироваться только в JIT-манере. Плюс языки динамически типизированные без вывода таипов. По этому в них приходится явно задавть повсеместно типы чтобы получить хотя бы похожую на С-шную прозводительность.


Был такой язык Self — весь из себя динамический. Вряд ли есть язык более динамический, чем Self...
Сановцы, разработчики Self'а, смогли создать для него компилятор, генерирующий код всего в 1.7 раза медленнее, чем у лучших (на тот момент) компиляторов Си. Они в своих исследованиях выяснили, что теоретически можно добиться отставания в скорости всего на треть. А потом начали делать Яву...

VD2> Ни Common Lisp, ни Scheme не поддеживают ООП на уровне языка. Для CL есть MOP — но это стандарт (которых похоже так и не реализуется одинаково всеми) на макро-библиотеку.


"Библиотека — это язык, пытающийся вырваться на свободу..."

Ну какая разница — встроено в язык или реализовано в виде библиотеки типа CLOS?.. Главное, что использование того же CLOS'а для лисперов выглядит совершенно естественно, так, как буд то это часть языка, а не какая-то левая библиотека. К тому же CLOS входит в стандарт Common Lisp'a, а значит её таки можно считать частью языка...
Re[11]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 17.05.07 20:54
Оценка:
Здравствуйте, konsoletyper, Вы писали:

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


А>> Я в сторону Nemerle не шуганусь ни за какие коврижки,


K>Почему?


Эх, не хотелось бы мне участвовать в очередном флейме, но не могу удержаться от цитаты:
______________________

Алан Перлис однажды заметил: “Язык, освоение которого не позволяет найти новые подходы к программированию, не заслуживает изучения”.
______________________

Разве Немерле даёт что-то новое, чего не давал бы какой-нибудь другой язык? Он только комбинирует в себе кучу разных идей...
Есть ли в Немерле своя "национальная идея"?
Re[11]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 21:32
Оценка:
Здравствуйте, Дм.Григорьев, Вы писали:

ДГ>Ну и что? Расширения — только функции; минимальная интеграция с внешним миром, так сказать. Переменные неизменяемые. Как следствие — возможны ленивые вычисления (уж не знаю, реализованы ли они на самом деле). Каждый шаблон можно вполне рассматривать как функцию result-tree-fragment = f (nodeset, nodeset, ...). С использованием EXSLT брюки превращаются: nodeset = exslt:node-set(result-tree-fragment). Насколько я успел понять из здешних флеймов (гы, нехилый у меня источник самообразования ), всего этого достаточно, чтобы обозвать язык чисто функциональным. Да, кстати, ООП там также не пахнет.


Ну, и как быть с циклами? Разве в чистых ФЯ они могут быть?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 21:32
Оценка:
Здравствуйте, geniepro, Вы писали:

G>Ленивость можно подавить и будет это не сложнее, чем явное указание ленивости в строгих языках.


Пока что я наблюдаю обратное. Надобность в линивости появляется редко и если она нужна, то есть тысяча спосбов ее зполучить.

G>Был такой язык Self — весь из себя динамический. Вряд ли есть язык более динамический, чем Self...


Он и сейчас есть. Развите Смолтока.

G>Сановцы, разработчики Self'а,


Чё? А орлы из Ксерокс-Парка не обидятся на присвоедие их разработок Сану?

G> смогли создать для него компилятор, генерирующий код всего в 1.7 раза медленнее, чем у лучших (на тот момент) компиляторов Си.


Это чушь. Может отдельные оперкции он и мог скопилировать в 1.7 раза медленее, но вот с его пототипной природой хрена два можно было реально быстрый код порождать.

G> Они в своих исследованиях выяснили, что теоретически можно добиться отставания в скорости всего на треть. А потом начали делать Яву...


... и сделаои ее типобезопасной... и теперь код на яве отстает всего на треть (в лучшем случае).

VD2>> Ни Common Lisp, ни Scheme не поддеживают ООП на уровне языка. Для CL есть MOP — но это стандарт (которых похоже так и не реализуется одинаково всеми) на макро-библиотеку.


G>"Библиотека — это язык, пытающийся вырваться на свободу..."


Ага. А демогогия — это искуство мыслить творчески.

G>Ну какая разница — встроено в язык или реализовано в виде библиотеки типа CLOS?..


Огромная. Она не является вастью языка. Более того она является другим языком, так как это макро-библиотека. Я вот на Немерле могу сэмулировать С++, но ведь от этого Немерле С++-ом ведь не станет. Или станет?

G> Главное, что использование того же CLOS'а для лисперов выглядит совершенно естественно,


Главно, что о нем даже не слышно. А мои попытки скомпилировать CLOS-примеры окончились не чем, так как все три скаченные мной компилятора/интерпретатора ругались на этот код, но в разных местах.

G> так, как буд то это часть языка, а не какая-то левая библиотека. К тому же CLOS входит в стандарт Common Lisp'a, а значит её таки можно считать частью языка...


Незнаю как в стандарт, я такого вообще не видел, вот в реализации он что- очень разные "входит". Столь разный, что плакать охота.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 21:32
Оценка:
Здравствуйте, Gaperton, Вы писали:

А>> Скажите, вы, случайно, не гуманитарий? Уж больно у вас гуманитарские представления.

G>Нет, к сожалению для вас я закончил профильный факультет МГУ (ВМиК), и достаточно хорошо представляю себе как поведение дипломной комиссии, так и что такое язык программирования. Уж не хуже выпускников мухосранских и московских "технических" вузов третьего эшелона, точно.

Ну, я не могу понять... Ну, этого орла мы забаним по IP, так он один фиг из под прокси видимо лезит. Но тебя то если забанят, то уже на долго. Неужели нельзя не реагировать на подобные провакационные выпады в той же манере?
В общем, в этот раз я сделал вид, что не заметил, но на будующее, просьба просто молчать если хочется ответить гадость.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.