Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.06.07 07:52
Оценка:
Казалось бы, языков программирования море. Как говорят некоторые, каждый год появляется и исчезает порядка двухсот языков. А как начнешь выбирать что-нибудь достойное, так кроме C++, Java, C# и еще нескольких функциональных (OCaml, Haskell) ничего и не видно (это я утрирую, конечно, но не сильно).

В общем, ищется не сильно мейнстримовый язык, который бы удовлетворял следующим требованиям:

Обязательные требования
* бесплатный, а еще лучше свободный. Не важно, под какой лицензией будет сам компилятор, важно, чтобы лицензии на run-time и основные стандартные библиотеки были под нормальными лицензиями (BSD, MIT, X, LGPL, Apache и пр.), допускающими использование в закрытых проектах;
* статически типизированный и компилируемый;
* безопасный. Т.е. либо работающий на какой-нибудь виртуальной машине, либо компилируемый в нативный код, но с тотальными проверками (в частности, указателей и индексов на валидность);
* со сборкой мусора;
* с поддержкой исключений (крайне желательно с поддержкой stack trace "из коробки");
* живой и более-менее стабильный. Т.е. язык, для которого переодически выходят релизы и вокруг которого есть живое сообщество;
* наличие готовых "родных" реализаций, как минимум, для Windows и какого-нибудь Linux/BSD. На крайний случай подойдет и поддержка Windows через Cygwin/MSYS.

Очень желательные требования
* объектно-ориентированный;
* быстрый.

Желательные требования
* оснащенность библиотеками.

В принципе, устраивают языки, работающие поверх JVM. Языки поверх .NET пока не предлагать

Интересуют ссылки на сайты языков и, если есть, собственные впечатления от их использования или знакомства с ними.

В качестве примеров того, какие языки могут заинтересовать: Dylan, E, Oberon, Modula-2, FreePascal, Seed7.

Заранее спасибо за помощь.

PS. Про Scala и Nemerle я знаю


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Ищется язык
От: no4  
Дата: 22.06.07 08:32
Оценка: :)
Здравствуйте, eao197, Вы писали:

E>Казалось бы, языков программирования море. Как говорят некоторые, каждый год появляется и исчезает порядка двухсот языков. А как начнешь выбирать что-нибудь достойное, так кроме C++, Java, C# и еще нескольких функциональных (OCaml, Haskell) ничего и не видно (это я утрирую, конечно, но не сильно).


E>В общем, ищется не сильно мейнстримовый язык, который бы удовлетворял следующим требованиям:


http://smarteiffel.loria.fr/ ?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Ищется язык
От: Sm0ke Россия ksi
Дата: 22.06.07 08:38
Оценка:
Здравствуйте, eao197, Вы писали:

php подойдёт?
Для него и компиляторы уже есть. Ищем в яндексе или вот ссылка:

http://www.roadsend.com/home/index.php

Roadsend PHP Compiler is an open source, native compiler for the PHP language. It compiles PHP source code to stand alone, native binaries which do not require an interpreter. Roadsend Compiler can build online web applications with Fast/CGI, offline web applications with an embedded web server (MicroServer), desktop GUI applications with PHP-GTK, and console applications. It is available on Linux, Windows, and FreeBSD.

Download the full prepackaged version of Roadsend Compiler for FREE now!

Roadsend PHP Compiler is now Open Source: a full license for current users now available online for free

Re[2]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.06.07 08:49
Оценка: +1
Здравствуйте, no4, Вы писали:

E>>Казалось бы, языков программирования море. Как говорят некоторые, каждый год появляется и исчезает порядка двухсот языков. А как начнешь выбирать что-нибудь достойное, так кроме C++, Java, C# и еще нескольких функциональных (OCaml, Haskell) ничего и не видно (это я утрирую, конечно, но не сильно).


E>>В общем, ищется не сильно мейнстримовый язык, который бы удовлетворял следующим требованиям:


no4>http://smarteiffel.loria.fr/ ?



Я просто забыл его вписать, т.к. он в списке идет самым первым, до разных Dylan-ов и Oberon-ов


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.06.07 08:50
Оценка:
Здравствуйте, Sm0ke, Вы писали:

S>php подойдёт?


AFAIK, PHP динамический язык, мне же нужен статически-типизированный.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Ищется язык
От: no4  
Дата: 22.06.07 09:01
Оценка:
Здравствуйте, eao197, Вы писали:

E>Языки поверх .NET пока не предлагать


А Mono считается?
boo работет поверх .NET и Mono.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Ищется язык
От: aka50 Россия  
Дата: 22.06.07 09:08
Оценка: 36 (1)
Здравствуйте, eao197, Вы писали:

E>Казалось бы, языков программирования море. Как говорят некоторые, каждый год появляется и исчезает порядка двухсот языков. А как начнешь выбирать что-нибудь достойное, так кроме C++, Java, C# и еще нескольких функциональных (OCaml, Haskell) ничего и не видно (это я утрирую, конечно, но не сильно).


E>В общем, ищется не сильно мейнстримовый язык, который бы удовлетворял следующим требованиям:


BETA можешь посмотреть. http://www.daimi.au.dk/~beta/
Re: Ищется язык
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 22.06.07 09:13
Оценка:
Здравствуйте, eao197, Вы писали:

Интереса ради... А чем собственно мейнстрим (Java, .NET) не устраивает? По указанным характеристикам Java-платформа подходит абсолютно, .NET по последнему обязательному требованию со своим Mono с натяжкой.
... << RSDN@Home 1.2.0 alpha rev. 679>>
Re[2]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.06.07 09:21
Оценка:
Здравствуйте, aka50, Вы писали:

E>>В общем, ищется не сильно мейнстримовый язык, который бы удовлетворял следующим требованиям:


A>BETA можешь посмотреть. http://www.daimi.au.dk/~beta/


Спасибо, мне почему-то казалось, что он приказал долго жить.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.06.07 09:25
Оценка:
Здравствуйте, rsn81, Вы писали:

R>Интереса ради... А чем собственно мейнстрим (Java, .NET) не устраивает? По указанным характеристикам Java-платформа подходит абсолютно, .NET по последнему обязательному требованию со своим Mono с натяжкой.


Как раз сама Java и не устраивает.
Ну и, опять же субъективно, не верится мне, что .NET будет реально кросс-платформенным, не в итересах MS это. Может произойти как с Eiffel-ем -- есть официальный EiffelStudio, а есть свободный SmartEiffel, которые уже между собой не сильно совместимы. С Mono так же может получиться -- нужно писать под Unix и Windows, таскай за собой Mono и туда и туда.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Ищется язык
От: aka50 Россия  
Дата: 22.06.07 09:40
Оценка:
Здравствуйте, eao197, Вы писали:

A>>BETA можешь посмотреть. http://www.daimi.au.dk/~beta/

E>Спасибо, мне почему-то казалось, что он приказал долго жить.
Можно сказать, что он не очень живой, но зато стабильный

Просто интересный язык, scala много из него взяла.
Re: Ищется язык
От: GlebZ Россия  
Дата: 22.06.07 10:15
Оценка: +1
Здравствуйте, eao197, Вы писали:

А чем OCaml не подходит? Вроде по всем пунктам проходит.
Re[2]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.06.07 10:19
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>А чем OCaml не подходит? Вроде по всем пунктам проходит.


Просто я про него уже знаю
Интересно то, чего не знаю еще.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Ищется язык
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 22.06.07 10:54
Оценка:
Здравствуйте, eao197, Вы писали:

E>Как раз сама Java и не устраивает.

Ну так скажите уже в конце-концов — чем?
... << RSDN@Home 1.2.0 alpha rev. 679>>
Re[4]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.06.07 11:00
Оценка:
Здравствуйте, rsn81, Вы писали:

E>>Как раз сама Java и не устраивает.

R> Ну так скажите уже в конце-концов — чем?

Что-то мне подсказывает, что аргумент "Ну не нравится мне Java и никогда не нравилась!" не прокатит

Хочется более простого и стройного языка, чем Java. Без спецификации исключений, без различия между int и Integer, с более простым обобщенным программированием (что-нибудь в духе шаблонов C++ или обобщенного программирования в Eiffel). Ну и без идеологии, которая каким-то непонятным образом затягивает всех разработчиков в Kingdom of Noun
Автор: eao197
Дата: 31.03.06
.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Ищется язык
От: no4  
Дата: 22.06.07 11:12
Оценка:
Здравствуйте, eao197, Вы писали:


E>не верится мне, что .NET будет реально кросс-платформенным


Mono есть и под винду
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Ищется язык
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 22.06.07 11:18
Оценка:
Здравствуйте, eao197, Вы писали:

E>Что-то мне подсказывает, что аргумент "Ну не нравится мне Java и никогда не нравилась!" не прокатит

А то!

E>Хочется более простого и стройного языка, чем Java. Без спецификации исключений, без различия между int и Integer, с более простым обобщенным программированием (что-нибудь в духе шаблонов C++ или обобщенного программирования в Eiffel). Ну и без идеологии, которая каким-то непонятным образом затягивает всех разработчиков в Kingdom of Noun
Автор: eao197
Дата: 31.03.06
.

А вам не кажется, что список ваших требований и немейнстрим — вы слишком много и сразу хотите?
Быть может каким-то требованием можно поступиться? К примеру, статической типизацией... нет?
... << RSDN@Home 1.2.0 alpha rev. 679>>
Re[4]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.06.07 11:18
Оценка:
Здравствуйте, no4, Вы писали:

E>>не верится мне, что .NET будет реально кросс-платформенным


no4>Mono есть и под винду


Так в этом и вся ирония. Вот в Java -- хоть под Windows, хоть под Linux, хоть под AIX -- Java она везде Java.
А вот есть .NET от MS, и есть Mono, который вроде как .NET, но другой. Маленький еще

Ну, собственно, тема-то не в том, что есть .NET/Mono и почему они мне не интересны. А в том, чтобы узнать, что еще есть за пределами .NET/Java/C++ (только не в мире функционального программирования).


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[6]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.06.07 11:24
Оценка:
Здравствуйте, rsn81, Вы писали:

E>>Хочется более простого и стройного языка, чем Java. Без спецификации исключений, без различия между int и Integer, с более простым обобщенным программированием (что-нибудь в духе шаблонов C++ или обобщенного программирования в Eiffel). Ну и без идеологии, которая каким-то непонятным образом затягивает всех разработчиков в Kingdom of Noun
Автор: eao197
Дата: 31.03.06
.

R>А вам не кажется, что список ваших требований и немейнстрим — вы слишком много и сразу хотите?

Как выясняется, слишком много и слишком сразу. Точнее, еще вчера

R>Быть может каким-то требованием можно поступиться?


Дык в том-то и дело, что происходящее в мейнстриме более-менее известно. Интересно, есть ли жизнь на Мар..., ну т.е. есть ли что заслуживающее внимания вне мейнстрима.

R>К примеру, статической типизацией... нет?


То, что перечислено в обязательных требованиях -- обязательно. От нет смысла отказываться. Особенно от статической типизации, безопасности и исключений.

Вот остальные требования могут игнорироваться.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Ищется язык
От: Sm0ke Россия ksi
Дата: 22.06.07 11:56
Оценка: :)
Здравствуйте, eao197, Вы писали:

...

E>То, что перечислено в обязательных требованиях -- обязательно. От нет смысла отказываться. Особенно от статической типизации, безопасности и исключений.


E>Вот остальные требования могут игнорироваться.


Похоже есть выход сбоку.
Берёте исходники gcc и пишете свой компилятор
Re: Ищется язык
От: FR  
Дата: 22.06.07 12:15
Оценка: 41 (2)
Здравствуйте, eao197, Вы писали:

E>Казалось бы, языков программирования море. Как говорят некоторые, каждый год появляется и исчезает порядка двухсот языков. А как начнешь выбирать что-нибудь достойное, так кроме C++, Java, C# и еще нескольких функциональных (OCaml, Haskell) ничего и не видно (это я утрирую, конечно, но не сильно).


E>В общем, ищется не сильно мейнстримовый язык, который бы удовлетворял следующим требованиям:


Посмотри http://xlr.sourceforge.net/
Re: Ищется язык
От: GlebZ Россия  
Дата: 22.06.07 12:33
Оценка: :))) :))) :))) :))) :))) :)))
Здравствуйте, eao197, Вы писали:

Занятно
Re[2]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.06.07 12:35
Оценка: +1
Здравствуйте, FR, Вы писали:

E>>Казалось бы, языков программирования море. Как говорят некоторые, каждый год появляется и исчезает порядка двухсот языков. А как начнешь выбирать что-нибудь достойное, так кроме C++, Java, C# и еще нескольких функциональных (OCaml, Haskell) ничего и не видно (это я утрирую, конечно, но не сильно).


E>>В общем, ищется не сильно мейнстримовый язык, который бы удовлетворял следующим требованиям:


FR>Посмотри http://xlr.sourceforge.net/


Любопытная штука. Только живым и стабильным его назвать тяжело


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.06.07 12:37
Оценка:
Здравствуйте, GlebZ, Вы писали:

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


GZ>Занятно


Даже Java под такой набор критериев не попадает.
То ли не быстрая, то ли не безопасная, то ли не бесплатная


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Ищется язык
От: AndreiF  
Дата: 22.06.07 12:37
Оценка: +1 :))
Здравствуйте, eao197, Вы писали:

E>* статически типизированный и компилируемый;


Не верю своим глазам
Re[2]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.06.07 12:42
Оценка: :))) :)
Здравствуйте, AndreiF, Вы писали:

E>>* статически типизированный и компилируемый;


AF>Не верю своим глазам


Удивляться нужно будет когда я начну искать функциональный язык.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Ищется язык
От: palm mute  
Дата: 22.06.07 12:45
Оценка: 24 (2) +1
Здравствуйте, eao197, Вы писали:

E>Казалось бы, языков программирования море. Как говорят некоторые, каждый год появляется и исчезает порядка двухсот языков. А как начнешь выбирать что-нибудь достойное, так кроме C++, Java, C# и еще нескольких функциональных (OCaml, Haskell) ничего и не видно (это я утрирую, конечно, но не сильно).


E>В общем, ищется не сильно мейнстримовый язык, который бы удовлетворял следующим требованиям:

Alice ML.
Re[5]: Ищется язык
От: no4  
Дата: 22.06.07 12:54
Оценка:
Здравствуйте, eao197, Вы писали:

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


E>>>не верится мне, что .NET будет реально кросс-платформенным


no4>>Mono есть и под винду


E>Так в этом и вся ирония. Вот в Java -- хоть под Windows, хоть под Linux, хоть под AIX -- Java она везде Java.

E>А вот есть .NET от MS, и есть Mono, который вроде как .NET, но другой. Маленький еще

Сам по себе Mono работает под Win и под Unix. Портит ли его наличие еще одной реализации от MS?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.06.07 13:11
Оценка: +1
Здравствуйте, no4, Вы писали:

E>>Так в этом и вся ирония. Вот в Java -- хоть под Windows, хоть под Linux, хоть под AIX -- Java она везде Java.

E>>А вот есть .NET от MS, и есть Mono, который вроде как .NET, но другой. Маленький еще

no4>Сам по себе Mono работает под Win и под Unix. Портит ли его наличие еще одной реализации от MS?


AFAIK, реализация .NET (и C# в частности) в Mono не такая полная и быстрая как реализация от MS. Так что получается, что портит.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Ищется язык
От: Left2 Украина  
Дата: 22.06.07 13:34
Оценка: +1 -1
А зачем обязательно всё делать на одном языке?
ИМХО схема с двумя языками (статический + динамический) куда жизнеспособнее К примеру: С++ + LUA (игры), С++ + JavaScript (Mozilla), джависты вон говорят что JavaScript интерпретатор уже идёт вместе с новым JDK...
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[2]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.06.07 13:43
Оценка:
Здравствуйте, Left2, Вы писали:

L>А зачем обязательно всё делать на одном языке?

L>ИМХО схема с двумя языками (статический + динамический) куда жизнеспособнее К примеру: С++ + LUA (игры), С++ + JavaScript (Mozilla), джависты вон говорят что JavaScript интерпретатор уже идёт вместе с новым JDK...

У меня вообще-то интерес другой: "Если не C++, то что?"
Что из себя представляет замена C++ на Java я представляю, C# вместо C++ так же не сложно представить. А вот что еще (если не брать в расчет махровую функциональщину )?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Ищется язык
От: Сергей Туленцев Россия http://software.tulentsev.com
Дата: 22.06.07 13:58
Оценка: +2
Здравствуйте, eao197, Вы писали:

no4>>Сам по себе Mono работает под Win и под Unix. Портит ли его наличие еще одной реализации от MS?


E>AFAIK, реализация .NET (и C# в частности) в Mono не такая полная и быстрая как реализация от MS. Так что получается, что портит.


Зато баги правят сильно оперативнее. Да и насколько сложилось впечатление, что в нем нет только Windows-specific вещей, вроде поддержки COM+
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
--
Re[2]: Ищется язык
От: FR  
Дата: 22.06.07 14:11
Оценка:
Здравствуйте, palm mute, Вы писали:

E>>В общем, ищется не сильно мейнстримовый язык, который бы удовлетворял следующим требованиям:

PM>Alice ML.

Показалось симпатичнее чем Ocaml, только не понятно как у него с производительностью.
Re[3]: Ищется язык
От: palm mute  
Дата: 22.06.07 14:16
Оценка: 1 (1)
Здравствуйте, FR, Вы писали:

PM>>Alice ML.

FR>Показалось симпатичнее чем Ocaml, только не понятно как у него с производительностью.

Я с Alice ML практически не знаком. Судя по FAQ, народ иногда жалуется на производительность, но разработчики утверждают, что существенных тормозов после старта виртуальной машины нет, байт-код JIT-ится.
Re: Ищется язык
От: Трурль  
Дата: 22.06.07 16:22
Оценка: 18 (1)
Limbo. Правда, у него своя ВМ. И я подозреваю, что в целом Dis уступает JVM.
Modula-3. После смерти DEC он сильно сдал, но все же можно считать его живым.
Re[2]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.06.07 17:07
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>Limbo. Правда, у него своя ВМ. И я подозреваю, что в целом Dis уступает JVM.


А разве есть версия Limbo под Windows?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Ищется язык
От: EvilChild Ниоткуда  
Дата: 22.06.07 18:09
Оценка:
Здравствуйте, eao197, Вы писали:

D ты уже не рассматриваешь в свете последних новостей, что ты постил?
now playing: Jimi Tenor — Nobody's Perfect
Re[2]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.06.07 18:43
Оценка:
Здравствуйте, EvilChild, Вы писали:

EC>D ты уже не рассматриваешь в свете последних новостей, что ты постил?


Рассматриваю. Но как раз D я знаю, мне интересны языки, про которые я либо не знаю, либо забыл (как в случае с BETA, XLR, Libmo, Modula-3, AliceML).

Тем более, что пока D не очень подходит под два обязательных требования:

* безопасный. Т.е. либо работающий на какой-нибудь виртуальной машине, либо компилируемый в нативный код, но с тотальными проверками (в частности, указателей и индексов на валидность) -- поскольку не всегда указатели там проверяются, насколько мне известно, особенно в Release режиме;
* с поддержкой исключений (крайне желательно с поддержкой stack trace "из коробки") -- в стандартной версии DMD до сих пор нет поддержки stack trace для исключений, эта поддержка реализуется в дополнительных библиоеках (Flectioned и Tango);



SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Ищется язык
От: EvilChild Ниоткуда  
Дата: 22.06.07 18:52
Оценка:
Здравствуйте, eao197, Вы писали:

E>Рассматриваю. Но как раз D я знаю, мне интересны языки, про которые я либо не знаю, либо забыл (как в случае с BETA, XLR, Libmo, Modula-3, AliceML).


Как посмотришь Alice ML поделись впечатлениями. По описанию выглядит просто убийственно.
И насколько OCaml удовлетворяет твоим тербованием? Вот впечатления людей применявших его в финансах.
now playing: Jimi Tenor — Tesla
Re[4]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.06.07 19:20
Оценка:
Здравствуйте, EvilChild, Вы писали:

E>>Рассматриваю. Но как раз D я знаю, мне интересны языки, про которые я либо не знаю, либо забыл (как в случае с BETA, XLR, Libmo, Modula-3, AliceML).


EC>Как посмотришь Alice ML поделись впечатлениями. По описанию выглядит просто убийственно.


Боюсь, что дальше Eiffel, BETA и Oberon у меня не хватит сил двигаться в сторону функциональных языков
Поэтому обещать не могу.

EC>И насколько OCaml удовлетворяет твоим тербованием? Вот впечатления людей применявших его в финансах.


Да OCaml-то вроде по всем критериям подходит. Но опять же, не любитель я (пока?) функциональных языков. И это для OCaml самая большая проблема в моем лично случае.

Меня ведь почему C++ не устраивает -- потому что вчерашних студентов за полгода-год на C++ нормально программировать не научишь (кстати, есть у меня предположение, что с Oberon-ом или Modula ситуация была бы совсем другой). Но C++ хоть императивный, а сейчас если чему-то и учат студентов, то именно императивным языкам. И мозги людям не нужно перестраивать, последовательный код и есть последовательный. А тут неопытного человека да с головой в функциональщину.

Это когда в школах иформатику начнут с функиональщины преподавать, да в ВУЗах какой-нибудь Lisp с Haskell-ем, тогда и можно будет всерьез OCaml рассматривать (в моих нынешних конкретных условиях).


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[5]: Ищется язык
От: EvilChild Ниоткуда  
Дата: 22.06.07 19:55
Оценка: +2
Здравствуйте, eao197, Вы писали:

E>Да OCaml-то вроде по всем критериям подходит. Но опять же, не любитель я (пока?) функциональных языков. И это для OCaml самая большая проблема в моем лично случае.


Он функциональный, но без загонов — на нём можно императивно писать: есть деструктивные присваивания.
И ещё плюс, что есть книги (как по нему так и по ML), причём их можно найти в p2p.
now playing: Dj Krush — Transition
Re[3]: Ищется язык
От: Трурль  
Дата: 22.06.07 20:05
Оценка:
Здравствуйте, eao197, Вы писали:

E>А разве есть версия Limbo под Windows?


Есть, конечно, первый в списке.
Re[4]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.06.07 20:12
Оценка:
Здравствуйте, Трурль, Вы писали:

E>>А разве есть версия Limbo под Windows?


Т>Есть, конечно, первый в списке.


Т.е. без Inferno он не живет?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Ищется язык
От: geniepro http://geniepro.livejournal.com/
Дата: 22.06.07 22:17
Оценка: 18 (1)
Здравствуйте, eao197, Вы писали:

E> В общем, ищется не сильно мейнстримовый язык, который бы удовлетворял следующим требованиям: ...


http://labs.businessobjects.com/cal/
Re: Ищется язык
От: hipp0p0tamus  
Дата: 23.06.07 06:08
Оценка:
Здравствуйте, eao197, Вы писали:


E>В качестве примеров того, какие языки могут заинтересовать: Dylan, E, Oberon, Modula-2, FreePascal, Seed7.


I suppose You forgot Objective C.
Re[2]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 23.06.07 06:50
Оценка: :)
Здравствуйте, hipp0p0tamus, Вы писали:

E>>В качестве примеров того, какие языки могут заинтересовать: Dylan, E, Oberon, Modula-2, FreePascal, Seed7.


H>I suppose You forgot Objective C.


No, I known about it. I just don't like Objective C.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Ищется язык
От: Didro Россия home~pages
Дата: 23.06.07 15:39
Оценка: 36 (1)
Здравствуйте, eao197, Вы писали:

E>В общем, ищется не сильно мейнстримовый язык, который бы удовлетворял следующим требованиям:


Ada ?
Хотя бы для коллекции [но ada2005 по всем признакам вроде как проходит + параллельное программирование на уровне языка]
Re[2]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 23.06.07 15:58
Оценка:
Здравствуйте, Didro, Вы писали:

D>Ada ?

D>Хотя бы для коллекции [но ada2005 по всем признакам вроде как проходит + параллельное программирование на уровне языка]

Спасибо за напоминание
Я и не знал, что есть ada2005.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Ищется язык
От: c-smile Канада http://terrainformatica.com
Дата: 24.06.07 02:42
Оценка: :)
Здравствуйте, eao197, Вы писали:

Java и не парся. Я серьезно.

"При всем богатстве выбора другой альтернативы нет" (С) Леня Мавродиевич Голубков.

Реально Java получилась уникальной по чистоте языка (есть косяки конечно но в меру) и простоте VM
(что означает надежность).
Re[2]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 24.06.07 06:33
Оценка: 1 (1)
Здравствуйте, c-smile, Вы писали:

CS>Java и не парся. Я серьезно.


CS>"При всем богатстве выбора другой альтернативы нет" (С) Леня Мавродиевич Голубков.


CS>Реально Java получилась уникальной по чистоте языка (есть косяки конечно но в меру) и простоте VM

CS>(что означает надежность).

Ну лично мне Eiffel гораздо симпатичнее Java. И по чистоте языка, и по быстродействию.

Имхо, в отношении Java очень показательно сработал принцип 'Worse is better'


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Ищется язык
От: Cyberax Марс  
Дата: 24.06.07 10:09
Оценка: +1
eao197 wrote:
> Ну лично мне Eiffel гораздо симпатичнее Java. И по чистоте языка, и по
> быстродействию.
Откуда там особое быстродействие? Язык с теми же характеристиками, что и
Java.

> Имхо, в отношении Java очень показательно сработал принцип 'Worse is better'

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

Ту же IDEA я считаю ОГРОМНЫМ плюсом Java.
Posted via RSDN NNTP Server 2.1 beta
Sapienti sat!
Re[4]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 24.06.07 10:51
Оценка:
Здравствуйте, Cyberax, Вы писали:

>> Ну лично мне Eiffel гораздо симпатичнее Java. И по чистоте языка, и по

>> быстродействию.
C>Откуда там особое быстродействие? Язык с теми же характеристиками, что и
C> Java.

Language Shootout, конечно, не большой авторитет, но все таки: http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&amp;lang=se&amp;lang2=java

А в языке, имхо, есть существенные различия. Например, в Java объекты могут храниться в других объектах только через ссылки. А в Eiffel есть возможность хранить объекты по значению (если мне мой склероз не изменяет).

>> Имхо, в отношении Java очень показательно сработал принцип 'Worse is better'

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

В первую очередь Eiffel просрал все свои достоинства за счет маркетинга. А огромное количество Java библиотек было обеспечено вначале фантастическим финансовым вливаниям со стороны Sun-а.

C>Ту же IDEA я считаю ОГРОМНЫМ плюсом Java.


AFAIK, EiffelStudio вовсе не потеряется на фоне IDEA.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[5]: Ищется язык
От: Cyberax Марс  
Дата: 24.06.07 14:34
Оценка:
eao197 wrote:
> Language Shootout, конечно, не большой авторитет, но все таки:
> http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&amp;lang=se&amp;lang2=java
> <http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&amp;lang=se&amp;lang2=java&gt;
У них для Java не очень правильный способ тестирования (не дают время
JITу на компиляцию и используют неправильные настройки).

> А в языке, имхо, есть существенные различия. Например, в Java объекты

> могут храниться в других объектах только через ссылки. А в Eiffel есть
> возможность хранить объекты по значению (если мне мой склероз не изменяет).
На практике, оно нужно в редких случаях из-за своей ограниченнсти.

> C>Ага. Благодаря простоте языка, есть куча интересных библиотек и

> C>инструментов.
> В первую очередь Eiffel просрал все свои достоинства за счет маркетинга.
> А огромное количество Java библиотек было обеспечено вначале
> фантастическим финансовым вливаниям со стороны Sun-а.
Вообще-то, почти все текущие популярные в Java-community проекты
(Hibernate, Spring, JBoss, Wicket, Tapestry, Tomcat, ...) развивались (и
развиваются) абсолютно независимо от Sun'а.

> C>Ту же IDEA я считаю ОГРОМНЫМ плюсом Java.

> AFAIK, EiffelStudio вовсе не потеряется на фоне IDEA.
Ооочень сильно недотягивает.
Posted via RSDN NNTP Server 2.1 beta
Sapienti sat!
Re[5]: Ищется язык
От: Трурль  
Дата: 24.06.07 15:58
Оценка:
Здравствуйте, eao197, Вы писали:

E>Т.е. без Inferno он не живет?

Inferno боятся не надо. Это что-то вроде Cygwin или JRE.
Re[6]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 24.06.07 17:43
Оценка:
Здравствуйте, Трурль, Вы писали:

E>>Т.е. без Inferno он не живет?

Т>Inferno боятся не надо. Это что-то вроде Cygwin или JRE.

Хм... Я думал, что это собственная ОС, даже не сильно совместимая с POSIX-ом. Хотя, если она абстрагирует приложение от деталей конкретной ОС, то это совсем не плохо.

А у тебя есть опыт работы с Inferno? Или ты где-нибудь сталкивался с подобными отзывами?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Ищется язык
От: anton_t Россия  
Дата: 24.06.07 18:53
Оценка: +1
Здравствуйте, GlebZ, Вы писали:

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


GZ>Занятно


А вот так первая ссылка выглядит ещё занятнее
Re[3]: Ищется язык
От: c-smile Канада http://terrainformatica.com
Дата: 24.06.07 19:06
Оценка:
Здравствуйте, eao197, Вы писали:

CS>>"При всем богатстве выбора другой альтернативы нет" (С) Леня Мавродиевич Голубков.


CS>>Реально Java получилась уникальной по чистоте языка (есть косяки конечно но в меру) и простоте VM

CS>>(что означает надежность).

E>Ну лично мне Eiffel гораздо симпатичнее Java. И по чистоте языка, и по быстродействию.


Все то же самое по большому счету.
Сугубо синтаксическая разница (это такое мое мнение), Eiffel более pascal-ish что-ли — на любителя.

E>Имхо, в отношении Java очень показательно сработал принцип 'Worse is better'


Сальваторе, ну вам то не пристало лэйблы расхожие юзать.

Имея опыт написания Java VM (как и других) могу сказать что Java обладает
просто феноменальным отношением "простота VM" / "богатство языка".
Собственно простота VM и является ключем к успеху Java. Мне так кажется.
Re[7]: Ищется язык
От: Cyberax Марс  
Дата: 24.06.07 21:16
Оценка:
eao197 wrote:
> А у тебя есть опыт работы с Inferno? Или ты где-нибудь сталкивался с
> подобными отзывами?
Насколько я помню, там у них даже GC нет, используется счетчик ссылок.
Posted via RSDN NNTP Server 2.1 beta
Sapienti sat!
Re[7]: Ищется язык
От: Трурль  
Дата: 25.06.07 07:40
Оценка:
Здравствуйте, eao197, Вы писали:


E>Хм... Я думал, что это собственная ОС, даже не сильно совместимая с POSIX-ом. Хотя, если она абстрагирует приложение от деталей конкретной ОС, то это совсем не плохо.

Здесь ситуация как с Обероном. Есть собственно ОС (действительно, мало совместимая с POSIX-ом) и есть её "эмуляции". Эмулятор содержит интерпретатор, JIT и низкоуровневе библиотеки. К сожалению, единственный способ использовать внешние библиотеки — встроить их в эмулятор.

E>А у тебя есть опыт работы с Inferno? Или ты где-нибудь сталкивался с подобными отзывами?

Нет, я просто смотрел их ВМ. Слышал восторженные отзывы от АСУТПшников, но они так и остались на QNX.
Re[8]: Ищется язык
От: Трурль  
Дата: 25.06.07 07:41
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Насколько я помню, там у них даже GC нет, используется счетчик ссылок.

Там есть и GC и счетчик ссылок.
Re[4]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 25.06.07 08:33
Оценка: 6 (2)
Здравствуйте, c-smile, Вы писали:

CS>>>Реально Java получилась уникальной по чистоте языка (есть косяки конечно но в меру) и простоте VM

CS>>>(что означает надежность).

E>>Ну лично мне Eiffel гораздо симпатичнее Java. И по чистоте языка, и по быстродействию.


CS>Все то же самое по большому счету.

CS>Сугубо синтаксическая разница (это такое мое мнение), Eiffel более pascal-ish что-ли — на любителя.

Вынужден здесь пока не согласиться (хотя последний раз материалы по Eiffel-у я штудировал больше года назад, так что могу сильно ошибаться). По своим номинальным способностям (сборка мусора там, переносимость и пр.) может они и выглядят похожими, но вот подходы к разработке программ на Eiffel и Java, я полагаю, существенно различаются:
* Eiffel, в отличии от Java поддерживает множественное наследование, причем с переименованием конфликтующих методов (чего нет в C++);
* В Eiffel есть понятие agent, которое используется для огранизации лямбд и замыканий (с элементами карринга);
* насколько я понял, язык Eiffel реализован в качестве поддержки одноименной методологии разработки ПО, в которой одну из главных ролей играет Design by Contract. Соответственно, интенсивное использование пред- и пост- условий в Eiffel программе делает ее существенно отличающейся от аналогичной Java-программы (даже если в Java будет использоваться т.н. defensive programming);
* в дополнение к пред- и пост- условиям в Eiffel для классов существует понятие инварианта, записываемое в специальной секции invariant и автоматически проверяемого;
* механизм обработки исключений в Eiffel в корне отличается от такового в Java (C++, C#, Ada, Ruby и др.). При возникновении исключения в Eiffel программа может либо исправить ситуацию посредством команды retry (т.е. повторить проблемный фрагмент заново так, чтобы исключение не возникло), либо отдать исключение наверх. Никаких тебе try/catch/finaly и возможности сделать какую-нибудь логику на исключениях.

Имхо, последние три отличительные черты языка заставляют программиста писать на Eiffel совсем не так, как на Java. Чем-то это должно напоминать, имхо, Erlang (хотя в Erlang-е можно перехватывать исключения через catch).

E>>Имхо, в отношении Java очень показательно сработал принцип 'Worse is better'


CS>Сальваторе, ну вам то не пристало лэйблы расхожие юзать.


Сеньор c-smile, бросание камешков в огород Java это одно из моих любимых занятий. Зачем же лишать меня такой маленькой радости?

CS>Имея опыт написания Java VM (как и других) могу сказать что Java обладает

CS>просто феноменальным отношением "простота VM" / "богатство языка".
CS>Собственно простота VM и является ключем к успеху Java. Мне так кажется.

Андрей, мне же не Java VM реализовывать нужно

Я, собственно, даже не уверен, что буду что-нибудь делать на тех языках, который всплыли в данной ветке. Хотя получить некоторый опыт использования того же Eiffel или Oberon на небольших задачках было бы интересно.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[5]: Ищется язык
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 25.06.07 10:08
Оценка:
Здравствуйте, eao197, Вы писали:

Little comments...

E>* Eiffel, в отличии от Java поддерживает множественное наследование, причем с переименованием конфликтующих методов (чего нет в C++);

Мне казалось, что от множественного наследования не зря отказались в тех же mainstream... вы считаете иначе?

E>* В Eiffel есть понятие agent, которое используется для огранизации лямбд и замыканий (с элементами карринга);

Да, сейчас с замыканиями в Java очень все не очень: реализация на основе анонимных классов выглядит слишком жутко. Но... на JCP есть слухи, что в 7-ке может появиться более изящная их поддержка.

Прежде замыкания никогда не являлись серьезным приоритетом для Java-разработчиков. Разработчики Java не поддерживали замыкания, потому что Java-пользователи сдержанно относились к выделению памяти в куче для переменных без явного new (см. раздел "Ресурсы"). Сегодня очень много говорится о включении замыканий в основной язык. За последние годы практический интерес к таким динамическим языкам как Ruby, JavaScript, и даже Lisp привел к широкой поддержке пользователями идеи включения замыканий в язык Java. Все идет к тому, что мы, наконец, получим замыкания в Java 1.7. Хорошие вещи происходят, если вы продолжаете пересекать границы.

© Пересекая границы: Замыкания. Больше, чем просто лестные слова


E>* насколько я понял, язык Eiffel реализован в качестве поддержки одноименной методологии разработки ПО, в которой одну из главных ролей играет Design by Contract. Соответственно, интенсивное использование пред- и пост- условий в Eiffel программе делает ее существенно отличающейся от аналогичной Java-программы (даже если в Java будет использоваться т.н. defensive programming);

E>* в дополнение к пред- и пост- условиям в Eiffel для классов существует понятие инварианта, записываемое в специальной секции invariant и автоматически проверяемого;
Если правильно вас понял, то в Java сейчас этот функционал (задание "контрактов") достаточно изящно реализуется на основе АОП, к примеру, с помощью самого популярного компилятора AspectJ. Тем более есть библиотеки с уже реализованными основными аспектами пред-пост условий, к примеру, Oval: логику условий можно задавать Java или Groovy-кодом; что примечательно, можно не лезть в аспектный синтаксис; мне понравилось, по-моему достаточно гибкий подход. См. здесь: В погоне за качеством кода: Безопасное программирование с помощью АОП.

E>* механизм обработки исключений в Eiffel в корне отличается от такового в Java (C++, C#, Ada, Ruby и др.). При возникновении исключения в Eiffel программа может либо исправить ситуацию посредством команды retry (т.е. повторить проблемный фрагмент заново так, чтобы исключение не возникло), либо отдать исключение наверх. Никаких тебе try/catch/finaly и возможности сделать какую-нибудь логику на исключениях.

Интересно. Действительно, сложно представить, как это можно с пользой применить. В смысле привычка думать в стиле try/catch/finally не дает.

E>Сеньор c-smile, бросание камешков в огород Java это одно из моих любимых занятий. Зачем же лишать меня такой маленькой радости?

Ну некоторые камешки все же мимо... не в тот огород...
... << RSDN@Home 1.2.0 alpha rev. 679>>
Re[6]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 25.06.07 10:33
Оценка:
Здравствуйте, rsn81, Вы писали:

E>>* Eiffel, в отличии от Java поддерживает множественное наследование, причем с переименованием конфликтующих методов (чего нет в C++);

R>Мне казалось, что от множественного наследования не зря отказались в тех же mainstream... вы считаете иначе?

Да. Как старого C++ программиста множественное наследование меня временами радует.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[6]: Ищется язык
От: aka50 Россия  
Дата: 25.06.07 11:27
Оценка:
Здравствуйте, rsn81, Вы писали:

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


R>Little comments...


E>>* Eiffel, в отличии от Java поддерживает множественное наследование, причем с переименованием конфликтующих методов (чего нет в C++);

R>Мне казалось, что от множественного наследования не зря отказались в тех же mainstream... вы считаете иначе?
От множественного — возможно и хорошо. Но вот traits хорошая вещь. Экономит кучу строк кода и сильно уменьшает возможность ошибок и copy&paste.
Re: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.06.07 11:30
Оценка:
Здравствуйте, eao197, Вы писали:

E>PS. Про Scala и Nemerle я знаю


Это не может не радовать.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.07.07 02:00
Оценка:
Здравствуйте, eao197, Вы писали:

E>Ну, собственно, тема-то не в том, что есть .NET/Mono и почему они мне не интересны.


Думаешь это кому-то кроме тебя не очевидно? Ты так долго внушал себе этму мысль, что поверил в нее.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.07.07 02:00
Оценка:
Здравствуйте, eao197, Вы писали:

E>AFAIK, реализация .NET (и C# в частности) в Mono не такая полная и быстрая как реализация от MS. Так что получается, что портит.


Быстра? Наверно... Но что имеется в виду под неполнотой C#?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.07.07 02:00
Оценка:
Здравствуйте, eao197, Вы писали:

E>У меня вообще-то интерес другой: "Если не C++, то что?"

E>Что из себя представляет замена C++ на Java я представляю, C# вместо C++ так же не сложно представить. А вот что еще (если не брать в расчет махровую функциональщину )?
...

PS. Про Scala и Nemerle я знаю

... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.07.07 02:00
Оценка:
Здравствуйте, EvilChild, Вы писали:

EC>Как посмотришь Alice ML поделись впечатлениями. По описанию выглядит просто убийственно.

EC>И насколько OCaml удовлетворяет твоим тербованием? Вот впечатления людей применявших его в финансах.

Дочитал до "Building a Better Caml" и понял, что можно сильно расстроить ребят дав им одну хорошо известную в наших кругах ссылку .
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Ищется язык
От: AndreiF  
Дата: 04.07.07 03:21
Оценка:
Здравствуйте, eao197, Вы писали:

E>Удивляться нужно будет когда я начну искать функциональный язык.


Не надо зарекаться
Re[8]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 04.07.07 05:46
Оценка:
Здравствуйте, VladD2, Вы писали:

E>>AFAIK, реализация .NET (и C# в частности) в Mono не такая полная и быстрая как реализация от MS. Так что получается, что портит.


VD>Быстра? Наверно... Но что имеется в виду под неполнотой C#?


Вероятно, моя информация устарела. Последний раз, когда я смотрел на Mono, их C# компилятор не полностью поддерживал с C#2.0 от MS.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: Ищется язык
От: Klapaucius  
Дата: 04.07.07 12:13
Оценка:
Здравствуйте, EvilChild, Вы писали:

EC>Как посмотришь Alice ML поделись впечатлениями. По описанию выглядит просто убийственно.


Разрешите поинтересоваться, что же там, в описании, такого убийственного? Мне показалось, что это просто еще одна попытка сделать компонентный ML — не больше и не меньше. К тому же у них, если не ошибаюсь, собственная VM, не так ли? Не делает ли это Alice, в каком-то смысле, вещью в себе?
... << RSDN@Home 1.2.0 alpha rev. 677>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[3]: Ищется язык
От: Klapaucius  
Дата: 04.07.07 12:34
Оценка:
Здравствуйте, eao197, Вы писали:

E>Я и не знал, что есть ada2005.


А ее официально и нет. Можно встретить еще названия вроде Ada 2006, Ada 2007, Ada 200X и т.д.
Это просто поправка к стандарту Ada 95 — сейчас называется ISO/IEC 8652:1995/Amd 1:2007
... << RSDN@Home 1.2.0 alpha rev. 677>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[5]: Ищется язык
От: FR  
Дата: 04.07.07 16:00
Оценка:
Здравствуйте, VladD2, Вы писали:

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


EC>>Как посмотришь Alice ML поделись впечатлениями. По описанию выглядит просто убийственно.

EC>>И насколько OCaml удовлетворяет твоим тербованием? Вот впечатления людей применявших его в финансах.

VD>Дочитал до "Building a Better Caml" и понял, что можно сильно расстроить ребят дав им одну хорошо известную в наших кругах ссылку .


Вряд ли, к тому же у ребят подержка паралельности на таком уровне который на NET/java сейчас не достижим.
Re[5]: Ищется язык
От: FR  
Дата: 04.07.07 16:01
Оценка:
Здравствуйте, Klapaucius, Вы писали:

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


EC>>Как посмотришь Alice ML поделись впечатлениями. По описанию выглядит просто убийственно.


K>Разрешите поинтересоваться, что же там, в описании, такого убийственного? Мне показалось, что это просто еще одна попытка сделать компонентный ML — не больше и не меньше. К тому же у них, если не ошибаюсь, собственная VM, не так ли? Не делает ли это Alice, в каком-то смысле, вещью в себе?


Зато эта же VM позволяет подерживать паралельность не хуже эрланга.
Re[5]: Ищется язык
От: EvilChild Ниоткуда  
Дата: 04.07.07 16:58
Оценка:
Здравствуйте, Klapaucius, Вы писали:

K>Разрешите поинтересоваться, что же там, в описании, такого убийственного? Мне показалось, что это просто еще одна попытка сделать компонентный ML — не больше и не меньше.

Это. Плюс интересный подход к паралеллизму.

K>К тому же у них, если не ошибаюсь, собственная VM, не так ли?

Ага.

K>Не делает ли это Alice, в каком-то смысле, вещью в себе?

Ты про то, что если не JVM или CLR, то это уже маргинальщина?
now playing: State Of Mind — Human Torch
Re[4]: Ищется язык
От: Didro Россия home~pages
Дата: 04.07.07 17:23
Оценка:
Здравствуйте, Klapaucius, Вы писали:

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


E>>Я и не знал, что есть ada2005.


K>А ее официально и нет. Можно встретить еще названия вроде Ada 2006, Ada 2007, Ada 200X и т.д.

K>Это просто поправка к стандарту Ada 95 — сейчас называется ISO/IEC 8652:1995/Amd 1:2007

Существует компилятор от AdaCore с поддержкой Ada 2005.
Компилятор здесь.
Пояснения к новой версии стандарта Ada 2005 здесь. А также книги и проч.
Re[6]: Ищется язык
От: Курилка Россия http://kirya.narod.ru/
Дата: 04.07.07 18:18
Оценка: +1
Здравствуйте, FR, Вы писали:

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

Не делает ли это Alice, в каком-то смысле, вещью в себе?

FR>Зато эта же VM позволяет подерживать паралельность не хуже эрланга.


Вот хотелось бы хоть какого-нибудь толкового подтверждения таким заявлениям, что-то не видел ни одного вменяемого сравнения, где бы фигурировали хоть какие-нибудь конкретные цифры. Только заявления о "лёгкости" параллелизма.
Re[5]: Ищется язык
От: Didro Россия home~pages
Дата: 04.07.07 18:20
Оценка:
Здравствуйте, Didro, Вы писали:
E>>>Я и не знал, что есть ada2005.

K>>А ее официально и нет. Можно встретить еще названия вроде Ada 2006, Ada 2007, Ada 200X и т.д.

K>>Это просто поправка к стандарту Ada 95 — сейчас называется ISO/IEC 8652:1995/Amd 1:2007
[skipself]
D>Пояснения к новой версии стандарта Ada 2005 здесь. А также книги и проч.
Вынужден поправиться — правильно заметил
Автор: Klapaucius
Дата: 04.07.07
Klapaucius Ada 2005 не является оффициально принятым стандартом, заменяющим Ada 95.(так что выделенное жирным неверно). имхо, конечно, изменения, вошедшие в Ada 2005, тянут на новую версию стандарта...
Re[7]: Ищется язык
От: FR  
Дата: 05.07.07 01:40
Оценка:
Здравствуйте, Курилка, Вы писали:

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


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

К>Не делает ли это Alice, в каком-то смысле, вещью в себе?

FR>>Зато эта же VM позволяет подерживать паралельность не хуже эрланга.


К>Вот хотелось бы хоть какого-нибудь толкового подтверждения таким заявлениям, что-то не видел ни одного вменяемого сравнения, где бы фигурировали хоть какие-нибудь конкретные цифры. Только заявления о "лёгкости" параллелизма.


Я серъезно не тестировал, но реализованно там все удобно, и скорее противоположно Эрлангу, не процессы — локальный парлелизм, прочитать можно тут:http://www.ps.uni-sb.de/alice/manual/futures.html
Re[6]: Ищется язык
От: Klapaucius  
Дата: 05.07.07 07:40
Оценка:
Здравствуйте, Didro, Вы писали:

D>имхо, конечно, изменения, вошедшие в Ada 2005, тянут на новую версию стандарта...


Так новая версия как раз планируется. В этом году или в следующем. ISO/IEC 8652:2007. Я о том и говорил, как раз, что нового стандарта еще нет, но он будет.
... << RSDN@Home 1.2.0 alpha rev. 677>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[8]: Ищется язык
От: Klapaucius  
Дата: 05.07.07 07:40
Оценка:
Здравствуйте, FR, Вы писали:

FR>Я серъезно не тестировал, но реализованно там все удобно, и скорее противоположно Эрлангу, не процессы — локальный парлелизм, прочитать можно тут:http://www.ps.uni-sb.de/alice/manual/futures.html


Ну и где здесь написано про легкие потоки и их поддержку со стороны VM? Мне бы хотелось почитать именно об этом, а в документации единственное упоминание про легкие потоки, которое я нашел — это рекламная фраза в описании фич.
Что же касается футур — то они элементарно реализуются, на базе системных потоков, правда, в любом языке с поддержкой лямбд и замыканий.
... << RSDN@Home 1.2.0 alpha rev. 677>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[6]: Ищется язык
От: Klapaucius  
Дата: 05.07.07 07:40
Оценка:
Здравствуйте, EvilChild, Вы писали:

K>>Не делает ли это Alice, в каком-то смысле, вещью в себе?

EC>Ты про то, что если не JVM или CLR, то это уже маргинальщина?

Про маргинальщину я ничего не говорил. Если своя VM нужна им для поддержки легких потоков — это оправдано, но подробной информации об этом я так и не нашел. Правда за все надо платить — создание VM это весьма нетривиальная задача, требующая значительных ресурсов. Они же сами пишут, например, что JIT у них есть пока только для x86 — на x86-64 и Power PC Alice фактически интерпретируется.
... << RSDN@Home 1.2.0 alpha rev. 677>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[6]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.07.07 22:18
Оценка:
Здравствуйте, FR, Вы писали:

FR>Вряд ли, к тому же у ребят подержка паралельности на таком уровне который на NET/java сейчас не достижим.


Если бы ты прочел указанную статью, то такой бред не сказал бы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.07.07 22:18
Оценка:
Здравствуйте, eao197, Вы писали:

E>Вероятно, моя информация устарела. Последний раз, когда я смотрел на Mono, их C# компилятор не полностью поддерживал с C#2.0 от MS.


Очень, вероятно...
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.07.07 08:28
Оценка:
Если кому интересно. Есть еще такой любопытный язык: Nice.
Осваивается (в отличии от Eiffel) в лет. И работает поверх JVM, так что интеграция с Java прозрачная + весь JDK в нагрузку. Жалко, только, что этот проект производит впечатление заглохшего.

А так очень симпатичный. Вот пример benchmark-а binary trees на нем в моей реализации:
class TreeNode
{
    int    item;
    ?TreeNode left = null;
    ?TreeNode right = null;

}

int itemCheck( ?TreeNode self )  
{
    if( null != self )
    {
        if( null != self.left )
            return self.item + itemCheck(self.left) - itemCheck(self.right);
        else
            return self.item;
    }
    return 0;
}

TreeNode bottomUpTree( int item, int depth )
{
    if( depth > 0 )
        return new TreeNode(
                item: item,
                left: bottomUpTree( 2 * item - 1, depth - 1 ),
                right: bottomUpTree( 2 * item, depth - 1 ) );
    else
        return new TreeNode( item: item );
}

void main( String[] args )
{
    let N = 1 == args.length ? Integer.parseInt( args[0] ) : 1;

    let minDepth = 4;
    let maxDepth = minDepth + 2 > N ? minDepth + 2 : N; 
    let stretchDepth = maxDepth + 1; 

    let startTime = System.currentTimeMillis();

    let stretchTree = bottomUpTree( 0, stretchDepth );
    println( "stretch tree of depth " stretchDepth "\t check: "
            stretchTree.itemCheck );

    let longLivedTree = bottomUpTree( 0, maxDepth );

    for( int depth = minDepth; depth <= maxDepth; depth += 2 ) 
    { 
        var check = 0;
        let iterations = 1 << (maxDepth - depth + minDepth);

        for( int i : 1..iterations )
        { 
            var tempTree = bottomUpTree( i, depth );
            check += tempTree.itemCheck;

            tempTree = bottomUpTree( -i, depth );
            check += tempTree.itemCheck;
        } 

        let totalTrees = iterations * 2;
        println( "" totalTrees "\t trees of depth " depth "\t check: " check ); 
    } 

    println( "long lived tree of depth " maxDepth "\t check: "
            longLivedTree.itemCheck );

    let stopTime = System.currentTimeMillis();
    let duration = stopTime - startTime;
    println( "" duration "ms" );
}


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Ищется язык
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 08.07.07 09:14
Оценка:
Здравствуйте, eao197, Вы писали:

E>Если кому интересно. Есть еще такой любопытный язык: Nice.

E>Осваивается (в отличии от Eiffel) в лет. И работает поверх JVM, так что интеграция с Java прозрачная + весь JDK в нагрузку. Жалко, только, что этот проект производит впечатление заглохшего.

Ты б лучше сказал чем он тебе нравится (кроме интеграции с Java).
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[3]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 09.07.07 07:24
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

E>>Если кому интересно. Есть еще такой любопытный язык: Nice.

E>>Осваивается (в отличии от Eiffel) в лет. И работает поверх JVM, так что интеграция с Java прозрачная + весь JDK в нагрузку. Жалко, только, что этот проект производит впечатление заглохшего.

ANS>Ты б лучше сказал чем он тебе нравится (кроме интеграции с Java).


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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 06.08.07 10:53
Оценка: 39 (6)
E>Казалось бы, языков программирования море. Как говорят некоторые, каждый год появляется и исчезает порядка двухсот языков. А как начнешь выбирать что-нибудь достойное, так кроме C++, Java, C# и еще нескольких функциональных (OCaml, Haskell) ничего и не видно (это я утрирую, конечно, но не сильно).

E>В общем, ищется не сильно мейнстримовый язык


Удалось оформить причины, вынудившие меня задать этот вопрос, в виде небольшого раздела моей home page

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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Ищется язык
От: Shota  
Дата: 06.08.07 12:25
Оценка: 19 (1)
Здравствуйте, eao197, Вы писали:

E>>Казалось бы, языков программирования море. Как говорят некоторые, каждый год появляется и исчезает порядка двухсот языков. А как начнешь выбирать что-нибудь достойное, так кроме C++, Java, C# и еще нескольких функциональных (OCaml, Haskell) ничего и не видно (это я утрирую, конечно, но не сильно).


E>>В общем, ищется не сильно мейнстримовый язык


E>Удалось оформить причины, вынудившие меня задать этот вопрос, в виде небольшого раздела моей home page


E>В рамках этого же мероприятия получилось более плотно познакомиться с языком Eiffel.


На своей странице ты просишь указывать ошибки. Пока дочитал до "Обзор языка Eiffel", выкладываю, что нашел.

Почему я ищу новый язык? — ръяно (мягкий знак нужен); А при появляении (появлении) параллельный for_each может оказаться, что selector_t будет просто-напросто глючить. — может параллельного?

Что не так с C++? — чтож (нужно что ж).

Что хочется найти? — определеть (определить); Неотъемлиной (Неотъемлимой); матиматическом (математическом); Не сложный (Несложный); C++ здесь является плохим примером, (запятая нужна) т.к. его сложно изучать; Эмоциональная составляющая при выборе языка является едва ли не более важным критерием; И как каждый инструмент, он должен хорошо "ложиться в руку" ("хорошо" кавычить не надо); Тот же C++ еще недавно был (а может и сейчас есть) самым настоящим мейнстримом, (запятая нужна) и это было хорошо; интероперабильности (интероперабельности); Так же мне кажется, что мейнстримовые языки должны быть ближе к примитиву, чем мне того хотелось бы. — Тут я не понял, что хотел сказать автор. Расшифровал мысль как "Хочу, чтобы мейнстрим был примитивнее". Так вот, я с ней категорически не согласен .

И еще.

Пожалуй, двумя примерами языков, которые мне никогда не нравились, являются Java и Perl


Ну ладно Perl, но за что Java никогда не нравилась? Сам собираюсь плотнее изучить ее.

С интересом продолжаю читать
Re[3]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 06.08.07 13:02
Оценка:
Здравствуйте, Shota, Вы писали:

S>На своей странице ты просишь указывать ошибки. Пока дочитал до "Обзор языка Eiffel", выкладываю, что нашел.


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

S>

S>Пожалуй, двумя примерами языков, которые мне никогда не нравились, являются Java и Perl


S>Ну ладно Perl, но за что Java никогда не нравилась? Сам собираюсь плотнее изучить ее.


Это достаточно долгая история. Которая началась еще где-то в 96-м. Java рекламировалась как "улучшенный" C++. Соответственно, были большие ожидания от использования Java. Но меня жестоко обманули. Первые несколько лет Java была тормознутой и убогой поделкой. Со временем ситуацию улучшили. Но, например, спецификация исключений все равно портит все впечатление.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[9]: Ищется язык
От: BulatZiganshin  
Дата: 06.08.07 16:17
Оценка: 25 (2)
Здравствуйте, eao197, Вы писали:

цитирую твой сайт:

E>Очень большой дискомфорт после Ruby в C++ вызывает объем С++ кода. Например, пусть нужно пройтись по вектору объектов и поместить их часть в два вектора-приемника, в зависимости от удовлетворения какому-нибудь условию.


на хаскеле и любом другом языке с поддержкой лямбд:

let (even, odd) = partition isEven numbers

вообще, C++ с STL — это более-менее функциоанльный стиль программирования (в том смысле, что алгоритмы, структуры данных определяются только один раз). но как многословно использование этих алгоритмов! в этом плане более современные языки с выводом типов, лямбдами и GC гораздо лучше


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


во-первых, половина функциональных языков (*ml, lisp) являются императивными. во-вторых, на хаскеле также можно писать императивный код, есть императивные ссылки, массивы, хеши. в-третьих, lazy структуры данных не требуют полного внесения изменений при обновлении. впрочем, это зависит от конкретного способа использования данных

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


далее. имхо в настоящее время хаскел лучше подходит для системного программирования, нежедли доля прикладного. почему? во-первых, какие у него преимущества:

1) большая надёжность. большая часть ошибок обнаруживается компилятором. это, кстати, наиболее важный аспект статической типизации. система типов в хаскеле — это основное направление его развития и можно сказать, что здесь именно тип описывает контракт. при этом благодаря type inferring ты не платишь за использование сложных типов как в C++ необходимостью их явного описания. в моих программах типы вообще практически не упоминаются

2) лёгкость описания сложных алгоритмов. функциональный подход значительно сокращает кол-во мусора, которым приходится обвешивать "мясо" алгоритма. учти type inferring, автоматический полиморфизм. в общем, чем сложнее твои алгоритмы обработки данных, тем больший смысл имеет использовать именно хаскел (это работает и в обратную сторону — использование хаскела провоцирует на реализацию более сложных алгоритмов, т.е. болеее высокие зарактеристики создаваемого ПО)

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

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

недостатки же хаскела, как и любого другого не mainstream языка, связаны с отсутвием IDE (навигация по коду, визуальное редактирование GUI/SQL, отладка), недостатком библиотек, книг, специалистов и т.д. и эти недостатки имхо менее существенны для системного программирования, нежели для прикладного

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


что касается сложности постижения ФП — то это чисто воображаемая проблема. имхо нужна просто практика. если ты работал с прологом, знаком с apl, используешь возможности ФП руби/питона, то это будет проще. если хочешь, можем устроить некий практикум по ФП — т.е. все желающие придумывают задачи, а я говорю, как решил бы их в хаскеле. кстати, ты http://rsdn.ru/Forum/message/2602368.1.aspx
Автор: BulatZiganshin
Дата: 28.07.07
читал?
Люди, я люблю вас! Будьте бдительны!!!
Re: Ищется язык
От: BulatZiganshin  
Дата: 06.08.07 16:33
Оценка:
E>* безопасный. Т.е. либо работающий на какой-нибудь виртуальной машине, либо компилируемый в нативный код, но с тотальными проверками (в частности, указателей и индексов на валидность);

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


насколько я соображаю, можно строго доказать, что выполнение этих условий гарантирует валидность всех используемых программой указателей. к слову замечу, что для того, чтобы не требовалось преобразования типов указателей, нужна развитая система типов (и в частности, поддержка полиморфизма)
Люди, я люблю вас! Будьте бдительны!!!
Re[5]: Ищется язык
От: BulatZiganshin  
Дата: 06.08.07 16:47
Оценка:
E>Хочется более простого и стройного языка, чем Java. Без спецификации исключений, без различия между int и Integer, с более простым обобщенным программированием (что-нибудь в духе шаблонов C++ или обобщенного программирования в Eiffel).

кстати, насколько я понимаю, проблема в том, что ООП и полиморфизм — это разные вещи. в c++ они так и существуют независимо друг от друга. в яве не просто реализовали полиморфизм, но и соединили его с ООПовской иерарзией классов. в результате этого ява предоставляет возможности, которые в С++ просто отсутствуют (контроль типов полиморфных процедур, применяемых к наследуемым типам)

так что можно сказать, что проблема скорее в том, что поддержка одновременно и ООП, и полиморфизма, и их совместного использования перегружает язык. в этом плане хаскел, где есть только полиморфизм, зато гораздо более развитый, чем в C++, представляет наиболее мощный и в то же время концептуально простой подход.
Люди, я люблю вас! Будьте бдительны!!!
Re[10]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 06.08.07 17:16
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>что касается сложности постижения ФП — то это чисто воображаемая проблема. имхо нужна просто практика. если ты работал с прологом, знаком с apl, используешь возможности ФП руби/питона, то это будет проще. если хочешь, можем устроить некий практикум по ФП — т.е. все желающие придумывают задачи, а я говорю, как решил бы их в хаскеле. кстати, ты http://rsdn.ru/Forum/message/2602368.1.aspx
Автор: BulatZiganshin
Дата: 28.07.07
читал?


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

Т.е. от последовательного описания шагов программы никуда не денешься. Поэтому вопрос упирается в то, насколько раздутым или ужатым будет описание. Скажем подходы C++ и Eiffel черезчур многословны. Подходы функциональных языков с их стремлением к математической лаконичности, напротив, слишком ужаты.

У Ричарда Гэбриеля есть хорошее эссе "Reuse versus Compression", в котором он указывает, что ООП -- это не столько путь к повторному использованию, сколько к компрессии программ. Мне кажется, что ФП (по крайней мере по результатам моих попыток познакомиться с Haskell и OCaml) есть не более чем еще один способ компрессии, даже более сильный, чем ООП. А недостатком сильно ужатого текста является сложность его восприятия.

Так что я пока подожду, посмотрю, что проиходит, чем же закончится всплеск интереса к ФП (если он вообще есть за пределами программистких форумов и раскрученных блогов).


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[6]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 06.08.07 17:18
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

E>>Хочется более простого и стройного языка, чем Java. Без спецификации исключений, без различия между int и Integer, с более простым обобщенным программированием (что-нибудь в духе шаблонов C++ или обобщенного программирования в Eiffel).


BZ>кстати, насколько я понимаю, проблема в том, что ООП и полиморфизм — это разные вещи.


Попробуй это Бертрану Мейеру рассказать. Я думаю он очень удивится.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Ищется язык
От: BulatZiganshin  
Дата: 06.08.07 21:00
Оценка:
Здравствуйте, eao197, Вы писали:

E>>>Хочется более простого и стройного языка, чем Java. Без спецификации исключений, без различия между int и Integer, с более простым обобщенным программированием (что-нибудь в духе шаблонов C++ или обобщенного программирования в Eiffel).


BZ>>кстати, насколько я понимаю, проблема в том, что ООП и полиморфизм — это разные вещи.


E>Попробуй это Бертрану Мейеру рассказать. Я думаю он очень удивится.


насколько я понимаю, в нём реализовано подмножество возможностей явы. т.е. параметр generic класса можно ограничит снизу, но нельзя его ограничить сверху. таким образом, по возможностям взаимодействия classes+generics он находится посерёлке между C++ и Java. я всё-таки считаю все эти тонкости взаимодействия generic-классов с иерархией классов в их параметрах проявлением именно того, что этоо скрещение двух разных технологий. в чистом ООП описание типа "T extends Numeric" ни к чему, в хаскеле оно является единственным способом описания полиморфных параметров. в смешанных же языках приходится одновременно иметь возможность передвать по ссылке T* любой тип-наследжник T и в то же время иметь этот "extends" механизм отдельно для generics
Люди, я люблю вас! Будьте бдительны!!!
Re[11]: Ищется язык
От: BulatZiganshin  
Дата: 06.08.07 22:13
Оценка:
Здравствуйте, eao197, Вы писали:

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


BZ>>что касается сложности постижения ФП — то это чисто воображаемая проблема. имхо нужна просто практика. если ты работал с прологом, знаком с apl, используешь возможности ФП руби/питона, то это будет проще. если хочешь, можем устроить некий практикум по ФП — т.е. все желающие придумывают задачи, а я говорю, как решил бы их в хаскеле. кстати, ты http://rsdn.ru/Forum/message/2602368.1.aspx
Автор: BulatZiganshin
Дата: 28.07.07
читал?


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


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

хаскел, в котором i/o строго отделено от вычислительной части, предлагает несколько иной взгляд на программу, нежели твой. для меня программа — это последовательность императивных действий, между которыми происходят вычисления:

x <- action1
y <- action2(f(x))
z <- action3(g(x,y))


т.е. параметры, передаваемые каждой action, являются функцией от данных, полученных от всех предыдущих actions. сам по себе вызов действий элементарен, сложность программы состоит именно в описании этих функций f,g и т.д. аналогично реализуется и логика программы:

if h(x,y,z)
  then procedure1
  else procedure2


как видишь, все эти f/g/h — всего лишь чистые функции, и всё что нам необходимо — это мощные средства описания произвольных функций. соответственно, чем сложнее алгоритмы, реализующие эти функции, тем больший резон использовать ФП, и наоборот — если логика и алгоритмика программы несложна, то от ФП не будет никакого толку

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

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



E>Т.е. от последовательного описания шагов программы никуда не денешься. Поэтому вопрос упирается в то, насколько раздутым или ужатым будет описание. Скажем подходы C++ и Eiffel черезчур многословны. Подходы функциональных языков с их стремлением к математической лаконичности, напротив, слишком ужаты.


E>У Ричарда Гэбриеля есть хорошее эссе "Reuse versus Compression", в котором он указывает, что ООП -- это не столько путь к повторному использованию, сколько к компрессии программ. Мне кажется, что ФП (по крайней мере по результатам моих попыток познакомиться с Haskell и OCaml) есть не более чем еще один способ компрессии, даже более сильный, чем ООП. А недостатком сильно ужатого текста является сложность его восприятия.


стоп. а ты сам можешь писать на них неужатые программы? мне кажется, что ты просто пытался читать чужой код и его было сложно понять. однако имхо причина этого не в том, что ФП *заставляет* ужимать код, а в том, что она предоставляет новые сжатые идиомы. пока ты их не освоил — этот код кажется такой же абракадаброй, как например для несишника *p++=*q++ (кстати, ты будешь смеяться, но я сейчас в хаскел-кафе имею дело именно с такими людьми). по мере того, как ты осваиваешь хаскел и выучиваешь эти идиомы, функциональный код будет казаться более естественным и понятным. ну а то, что для тебя неестественно, всегда можно записать в более многословной манере. я напримере, никогда не пользуюсь foldr — голова не пареваривает; вместо этого описываю явную рекурсию. или вот, к примеру:

add_version str = if verbose
                    then str++" v2.0"
                    else str

или

add_version = verbose &&& (++" v2.0")


мне лично вторая версия нравится больше как описывающая только суть дела и не содержащая ничего лишнего. опять-таки, в первое время работы с хаскелом меня коробило от point-free стиля (когда при описании функций опускаются их параметры), сейчас я отношусь к нему спокойно


E>Так что я пока подожду, посмотрю, что проиходит, чем же закончится всплеск интереса к ФП (если он вообще есть за пределами программистких форумов и раскрученных блогов).


а мне казалось, что это не всплеск, а постепенное нарастание со временем. может, оно ускорилось в последние лет 10 в связи с увеличением мощности персоналок и перспектив многоядерности. по крайней мере, аудитория haskell-cafe сейчас в абсолютном выражении растёт быстрее, чем раньше, а в относительном — наверно так же. просто это экспоненциальный рост
Люди, я люблю вас! Будьте бдительны!!!
Re[8]: Ищется язык
От: BulatZiganshin  
Дата: 06.08.07 22:30
Оценка:
BZ>>>кстати, насколько я понимаю, проблема в том, что ООП и полиморфизм — это разные вещи.

E>>Попробуй это Бертрану Мейеру рассказать. Я думаю он очень удивится.


BZ>насколько я понимаю, в нём реализовано подмножество возможностей явы.


вот кстати, сейчас вычитал, что eiffel/c++ нельзя делать виртуальными полиморфные методы, а в c#/яве — можно. так что это всё же две разные вещи, и сложность явы вызвана попыткам полностью реализовать все возможные сценарии их взаимодействия, а простота c++/эйфеля — тем что взаимодействие между ними в полном объёме не реализовано
Люди, я люблю вас! Будьте бдительны!!!
Re[9]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.08.07 04:20
Оценка: +1
Здравствуйте, BulatZiganshin, Вы писали:

BZ>>насколько я понимаю, в нём реализовано подмножество возможностей явы.


BZ>вот кстати, сейчас вычитал, что eiffel/c++ нельзя делать виртуальными полиморфные методы, а в c#/яве — можно. так что это всё же две разные вещи, и сложность явы вызвана попыткам полностью реализовать все возможные сценарии их взаимодействия, а простота c++/эйфеля — тем что взаимодействие между ними в полном объёме не реализовано


Что такое "виртуальные полиморфные методы"?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[10]: Ищется язык
От: BulatZiganshin  
Дата: 07.08.07 05:25
Оценка:
Здравствуйте, eao197, Вы писали:

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


BZ>>>насколько я понимаю, в нём реализовано подмножество возможностей явы.


BZ>>вот кстати, сейчас вычитал, что eiffel/c++ нельзя делать виртуальными полиморфные методы, а в c#/яве — можно. так что это всё же две разные вещи, и сложность явы вызвана попыткам полностью реализовать все возможные сценарии их взаимодействия, а простота c++/эйфеля — тем что взаимодействие между ними в полном объёме не реализовано


E>Что такое "виртуальные полиморфные методы"?


насколько я понимаю, ты определяешь generic класс, скажем массив, затем его наследника скажем стек. определяешь виртуальный метод в массиве, даёшь ему другую реализацию в стеке. затем определяешь переменную типа сслыка на массив, присваиваешь ей ссылку на стек, и вызывываешь этот метод. хочешь попробовать?
Люди, я люблю вас! Будьте бдительны!!!
Re[11]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.08.07 05:34
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>>>вот кстати, сейчас вычитал, что eiffel/c++ нельзя делать виртуальными полиморфные методы, а в c#/яве — можно. так что это всё же две разные вещи, и сложность явы вызвана попыткам полностью реализовать все возможные сценарии их взаимодействия, а простота c++/эйфеля — тем что взаимодействие между ними в полном объёме не реализовано


E>>Что такое "виртуальные полиморфные методы"?


BZ>насколько я понимаю, ты определяешь generic класс, скажем массив, затем его наследника скажем стек. определяешь виртуальный метод в массиве, даёшь ему другую реализацию в стеке. затем определяешь переменную типа сслыка на массив, присваиваешь ей ссылку на стек, и вызывываешь этот метод. хочешь попробовать?


Ну и что здесь сложного? (В качестве уточнения задачи: какой метод может быть общим у массива и стека, за исключением size и capacity?)


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[11]: Ищется язык
От: Курилка Россия http://kirya.narod.ru/
Дата: 07.08.07 05:38
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

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


E>>Что такое "виртуальные полиморфные методы"?


BZ>насколько я понимаю, ты определяешь generic класс, скажем массив, затем его наследника скажем стек. определяешь виртуальный метод в массиве, даёшь ему другую реализацию в стеке. затем определяешь переменную типа сслыка на массив, присваиваешь ей ссылку на стек, и вызывываешь этот метод. хочешь попробовать?


Не понял, а чем это от просто виртуальных методов отличается? Т.е. чем плюсовый virtual-метод от метода явовского объекта отличается? И там и там vmt, которая даёт полиморфность вызовов.
Можешь кусок кода набросать?
Re[12]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.08.07 06:00
Оценка: +1
Здравствуйте, BulatZiganshin, Вы писали:

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


BZ>знаешь, то, для чего в 50-е писали целые императивные программы, сейчас может быть выражено в excel или mathematica с помощью набора формул без необходимости явно записывать все эти циклы и порядок вычислений. решаемые задачи не изменились, но для них нашли более краткую форму, которая описывает только то, какой результат нам нужно получить. Excel иногда сравнивают с таким функциональным языком, где нет возможности описывать свои функции


Подобный экскурс в историю не выглядит доказательством чего-либо. Был бы в 50-е Excel, мало кто бы писал императивные программы. Вся проблема в том, что в 50-е годы существование Excel-я было вообще невозможно. Как еще относительно недавно было невозможно делать сложные вычисления в Excel на 486-x с 4Mb RAM на борту.

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

BZ>в случае твоего sms-шлюза, как я понимаю, действия очень просты — получить sms/отправить sms,


Да, любая программа может рассматриваться как окошко с двумя кнопками -- большой зеленой "Работать" и маленькой красной "Стоп". Впрочем, маленькая красная не всегда нужна.

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


Сейчас я не знаю, зачем мне знать, как это описать еще в какой-то другой форме.

E>>У Ричарда Гэбриеля есть хорошее эссе "Reuse versus Compression", в котором он указывает, что ООП -- это не столько путь к повторному использованию, сколько к компрессии программ. Мне кажется, что ФП (по крайней мере по результатам моих попыток познакомиться с Haskell и OCaml) есть не более чем еще один способ компрессии, даже более сильный, чем ООП. А недостатком сильно ужатого текста является сложность его восприятия.


BZ>стоп. а ты сам можешь писать на них неужатые программы? мне кажется, что ты просто пытался читать чужой код и его было сложно понять. однако имхо причина этого не в том, что ФП *заставляет* ужимать код, а в том, что она предоставляет новые сжатые идиомы. пока ты их не освоил — этот код кажется такой же абракадаброй, как например для несишника *p++=*q++ (кстати, ты будешь смеяться, но я сейчас в хаскел-кафе имею дело именно с такими людьми). по мере того, как ты осваиваешь хаскел и выучиваешь эти идиомы, функциональный код будет казаться более естественным и понятным. ну а то, что для тебя неестественно, всегда можно записать в более многословной манере. я напримере, никогда не пользуюсь foldr — голова не пареваривает; вместо этого описываю явную рекурсию. или вот, к примеру:


BZ>
BZ>add_version str = if verbose
BZ>                    then str++" v2.0"
BZ>                    else str

BZ>или

BZ>add_version = verbose &&& (++" v2.0")
BZ>


BZ>мне лично вторая версия нравится больше как описывающая только суть дела и не содержащая ничего лишнего. опять-таки, в первое время работы с хаскелом меня коробило от point-free стиля (когда при описании функций опускаются их параметры), сейчас я отношусь к нему спокойно


Смысл компрессии в упомянутой работе Гэбриеля в том, что благодоря неявному контексту на котором написан некоторый фрагмент кода, семантика фрагмента становится значительно больше семантики одельных символов фрагмента кода. Применительно к ФП это означает, что когда кто-то пишет что-то типа:
(a, _) = partition( map( filter(seq, filter_lambda), map_lambda ), part_lambda )

То смысл всего выражения оказывается гораздо более емким, чем каждой из его частей. Так вот, на мой взгляд, требование к пониманию контекста в ФП выше, чем в ООП. И не факт, что это хорошо.

От чего я действительно устал за время программирования, так это от наличия разных уровней сложности в одном языке. Мне уже не кажется нормальным, когда кто-то выбирает фичу языка A потому, что он не понимает фичу B. Ты сам сказал, что foldr для тебя не просто -- имхо, это уже симптом. Для кого-то не просты шаблоны C++. Следствием этого являются библиотеки, вроде Boost. Про которые говорят -- не нужно в них влазить, не обязательно даже знать C++ в такой же степени, в которой его знают разработчики Boost-а, просто используй его и будет тебе счастье.

По-моему, это не правильный подход. Язык должен предоставлять набор логичных и простых конструкций. И чтобы новичок в языке не глядел на код гуру с восхищением: "Ух ты, оказывается и так можно! Вау!". И новичок и гуру должны использовать одни и те же конструкции. Разница должна быть не в ужатости кода, а в том, насколько код соотвествует поставленной задаче.

Возвращаясь к Eiffel нужно сказать, что в нем Мейер на удивление близко подобрался к данному идеалу. Очень мощный язык, но без слишком темных углов. Если бы не странный (по крайней мере на мой текущий взгляд) механизм исключений, со всеми его остальными недостатками можно было бы смириться.

E>>Так что я пока подожду, посмотрю, что проиходит, чем же закончится всплеск интереса к ФП (если он вообще есть за пределами программистких форумов и раскрученных блогов).


BZ>а мне казалось, что это не всплеск, а постепенное нарастание со временем. может, оно ускорилось в последние лет 10 в связи с увеличением мощности персоналок и перспектив многоядерности. по крайней мере, аудитория haskell-cafe сейчас в абсолютном выражении растёт быстрее, чем раньше, а в относительном — наверно так же. просто это экспоненциальный рост


Ну пусть будет так.
So it goes


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[12]: Ищется язык
От: BulatZiganshin  
Дата: 07.08.07 07:02
Оценка:
Здравствуйте, eao197, Вы писали:

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


BZ>>>>вот кстати, сейчас вычитал, что eiffel/c++ нельзя делать виртуальными полиморфные методы, а в c#/яве — можно. так что это всё же две разные вещи, и сложность явы вызвана попыткам полностью реализовать все возможные сценарии их взаимодействия, а простота c++/эйфеля — тем что взаимодействие между ними в полном объёме не реализовано


E>>>Что такое "виртуальные полиморфные методы"?


BZ>>насколько я понимаю, ты определяешь generic класс, скажем массив, затем его наследника скажем стек. определяешь виртуальный метод в массиве, даёшь ему другую реализацию в стеке. затем определяешь переменную типа сслыка на массив, присваиваешь ей ссылку на стек, и вызывываешь этот метод. хочешь попробовать?


E>Ну и что здесь сложного?


не знаю

E>(В качестве уточнения задачи: какой метод может быть общим у массива и стека, за исключением size и capacity?)


типа "не больно-то и хотелось"? всё-таки это пример лакуны во взаимодействии классов и generics
Люди, я люблю вас! Будьте бдительны!!!
Re[12]: Ищется язык
От: BulatZiganshin  
Дата: 07.08.07 07:12
Оценка:
E>>>Что такое "виртуальные полиморфные методы"?

BZ>>насколько я понимаю, ты определяешь generic класс, скажем массив, затем его наследника скажем стек. определяешь виртуальный метод в массиве, даёшь ему другую реализацию в стеке. затем определяешь переменную типа сслыка на массив, присваиваешь ей ссылку на стек, и вызывываешь этот метод. хочешь попробовать?


К>Не понял, а чем это от просто виртуальных методов отличается? Т.е. чем плюсовый virtual-метод от метода явовского объекта отличается? И там и там vmt, которая даёт полиморфность вызовов.

К>Можешь кусок кода набросать?

generic класс — это по c++ templated class. примерно так:
template <class T>
struct Array
{
  virtual int size() {return 1;}
};

template <class T>
struct Stack : Array<T>
{
  virtual int size() {return 2;}
};

main()
{
  Array<int> *p = new Stack<int>;
  printf ("%d", p->size());
}


но этот код работает видимо, я что-то понял неправильно. утверждение взято с 22-й страницы http://research.microsoft.com/~akenn/generics/TransposingFToCSharp.ppt
Люди, я люблю вас! Будьте бдительны!!!
Re[13]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.08.07 07:31
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

E>>>>Что такое "виртуальные полиморфные методы"?


BZ>>>насколько я понимаю, ты определяешь generic класс, скажем массив, затем его наследника скажем стек. определяешь виртуальный метод в массиве, даёшь ему другую реализацию в стеке. затем определяешь переменную типа сслыка на массив, присваиваешь ей ссылку на стек, и вызывываешь этот метод. хочешь попробовать?


E>>Ну и что здесь сложного?


BZ>не знаю


Вот и я не знаю

E>>(В качестве уточнения задачи: какой метод может быть общим у массива и стека, за исключением size и capacity?)


BZ>типа "не больно-то и хотелось"?


Ну мы, я надеюсь, не достигли еще такой степени нетерпимости друг к другу, чтобы общаться подобным образом.

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

Т.е. это случай, когда наследование используется для наследования реализации, но не для увеличения специализации путем наследования интерфейса с перекрытыми реализациями методов.

Что в С++ решается, например, с помощью protected/private наследования:
template< class G >
class vector_t
  {
  public :
    void append( const G & );
    const G & at( size_t index ) const;
    void insert( size_t index, const G & );
    void remove( size_t index );
    size_t size() const;
    ...
  };

template< class G >
class stack_t : protected vector_t< G >
  {
  public :
    const G & top() const { assert( size() ); return at( size() - 1 ); }
    void pop() { assert( size() ); remove( size() - 1 ); }
    void push( const G & item ) { append( item ); }
    using vector_t::size; // Не счет этого не уверен, давно не пользовался.
    using vector_t::capacity;
  };


В Eiffel это же дело решалось бы путем:
a) переименования методов унаследованных из VECTOR (например, vector_append, vector_insert, vector_remove) и, затем
b) экспортом части методов только классу NONE.
Что-то типа:
class
  STACK [G]
inherit
  VECTOR [G]
    rename
      append as vector_append,
      insert as vector_insert,
      at as vector_at,
      remove as vector_remove
    export
      {NONE} vector_append, vector_insert, vector_at, vector_remove
    end
feature
  top: G is
    require
      non_empty: 0 < size
    do
      Result := vector_at (size)
    ensure
      one_more: (old size + 1) = size
    end

  pop is
    require
      non_empty: 0 < size
    do
      vector_remove (size)
    ensure
      one_less: old size = (size + 1)
    end

  push (item: G) is
    do
      vector_insert (item)
    ensure
      one_more: (old size + 1) = size
    end
end


BZ>всё-таки это пример лакуны во взаимодействии классов и generics


Да не видно здесь ничего страшного. Давай, например, возьмем два класса: вектор (vector_t) и разреженный вектор (sparse_vector_t) в котором каждый четный элемент равен 0. В классе vector_t нужно объявить виртуальный метод at(), а в sparse_vector_t -- переопределить его. И все будет работать -- ведь это же основной принцип ООП, и generic-и здесь вообще не при чем.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[13]: Ищется язык
От: Курилка Россия http://kirya.narod.ru/
Дата: 07.08.07 07:33
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

E>>>>Что такое "виртуальные полиморфные методы"?


BZ>>>насколько я понимаю, ты определяешь generic класс, скажем массив, затем его наследника скажем стек. определяешь виртуальный метод в массиве, даёшь ему другую реализацию в стеке. затем определяешь переменную типа сслыка на массив, присваиваешь ей ссылку на стек, и вызывываешь этот метод. хочешь попробовать?


К>>Не понял, а чем это от просто виртуальных методов отличается? Т.е. чем плюсовый virtual-метод от метода явовского объекта отличается? И там и там vmt, которая даёт полиморфность вызовов.

К>>Можешь кусок кода набросать?

BZ>generic класс — это по c++ templated class. примерно так:

[cut]

BZ>но этот код работает видимо, я что-то понял неправильно. утверждение взято с 22-й страницы http://research.microsoft.com/~akenn/generics/TransposingFToCSharp.ppt


Что-то я так до конца не могу понять что ты хочешь сделать и зачем. Какие-то заморочные теоретические изыски имхо.
Что тот код выдаст? 1 или 2? Есть ощущение что 2, но цпп под рукой нет
Ты хочешь чтобы метод определялся типом ссылки или переопределялся через vmt? Первое имхо какой-то антиполиморфизм, а второе — стандартное поведение "традиционных" ООП-языков аля ява/шарп/плюсы (generic тут только на наследование влиять будет, имхо, кстати в плюсах будет ковариантность для T соблюдаться?)
Re[2]: Ищется язык
От: mnf  
Дата: 07.08.07 09:06
Оценка: 19 (1)
Здравствуйте, eao197.

Спасибо за очень интересную тему, я и сам постоянно пытаюсь сформулировать подход, который бы позволил проще и короче писать безопасный и достаточно быстрый код.

Некоторый замечания:
На странице Почему я ищу новый язык? написано, что "for_each не специфицирует порядка обхода элементов". На первый взгляд в 25.1.1 сказано, что "for_each() аpplies f to the result of dereferencing every iterator in the range [first, last), starting from first and proceeding to last — 1.".
Операторы записываются не result_type operator(argument_type item), а result_type operator()(argument_type item); class selector_t не может быть объявлен там же, где используется for_each() (кстати, это мне тоже совсем не нравится: функторы приходится объявлять за пределами процедуры с for_each(), из-за этого потом трудно читать код).

В "Что не так с C++?" я бы на первое место поставил саму возможность "unspecified behavior" и "implementation-defined behavior", ведь когда разрабатывается надежная система, все должно быть специфицировано. Хотя мне говорили, что даже в таком языке как Ada, рекомендуемом для безотказных систем, порядок вычисления аргументов функции тоже неопределен (пусть поправят те, кто на ней писал), поэтому есть причины сомневаться, что вообше существует язык программирования, удовлетворяющий всем поставленным критериям. И это точно не Eiffel.

Так что пока С++ выигрывает по очкам (IMO). Может имеет смысл подумать о гибридных системах: C++ — системные библиотеки, критические по скорости процедуры, старый код, а сверху над ними что-нибудь более удобное и очень простое (что это может быть я и сам не знаю — пробовал только Python, поэтому не столько советую, сколько спрашиваю)?

Удачи в поисках,

Михаил
Re[13]: Ищется язык
От: crable США  
Дата: 07.08.07 09:14
Оценка: 7 (1)
Здравствуйте, BulatZiganshin, Вы писали:

E>>>>Что такое "виртуальные полиморфные методы"?


BZ>>>насколько я понимаю, ты определяешь generic класс, скажем массив, затем его наследника скажем стек. определяешь виртуальный метод в массиве, даёшь ему другую реализацию в стеке. затем определяешь переменную типа сслыка на массив, присваиваешь ей ссылку на стек, и вызывываешь этот метод. хочешь попробовать?


К>>Не понял, а чем это от просто виртуальных методов отличается? Т.е. чем плюсовый virtual-метод от метода явовского объекта отличается? И там и там vmt, которая даёт полиморфность вызовов.

К>>Можешь кусок кода набросать?

[кусь]

BZ>но этот код работает видимо, я что-то понял неправильно. утверждение взято с 22-й страницы http://research.microsoft.com/~akenn/generics/TransposingFToCSharp.ppt


Я думаю, ты немного спутал термины. "Виртуальные полиморфные методы" это не виртуальные методы шаблонного ("полиморфного") класса, а шаблонные ("полиморфные") методы класса (не важно, обычного или шаблонного), т.е.

// C++
struct foo
{
  template <typename T> void f() {} // компилируется
  virtual template <typename T> void b() {} // а здесь ошибка
};


// C#
abstract class Base
{
   public abstract T F<T,U>(T t, U u) where U : T;
}

class Derived: Base
{
   public override X F<X,Y>(X x, Y y) // Ok
   {
      return y;
   }
}
The last good thing written in C was Franz Schubert's Symphony No. 9.
Re[7]: Ищется язык
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 07.08.07 09:34
Оценка:
Здравствуйте, eao197, Вы писали:

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


E>>>Хочется более простого и стройного языка, чем Java. Без спецификации исключений, без различия между int и Integer, с более простым обобщенным программированием (что-нибудь в духе шаблонов C++ или обобщенного программирования в Eiffel).


BZ>>кстати, насколько я понимаю, проблема в том, что ООП и полиморфизм — это разные вещи.


E>Попробуй это Бертрану Мейеру рассказать. Я думаю он очень удивится.


Не только он. Еще Alan Key акцентирует внимание на "extremly late binding". То есть, полиморфизм это наше всё.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[6]: Ищется язык
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 07.08.07 09:35
Оценка: +1
Здравствуйте, BulatZiganshin, Вы писали:

E>>Хочется более простого и стройного языка, чем Java. Без спецификации исключений, без различия между int и Integer, с более простым обобщенным программированием (что-нибудь в духе шаблонов C++ или обобщенного программирования в Eiffel).


BZ>ООП и полиморфизм — это разные вещи.


Иерархия классову и полиморфизм...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[3]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.08.07 10:46
Оценка:
Здравствуйте, mnf, Вы писали:

mnf>Некоторый замечания:

mnf>На странице Почему я ищу новый язык? написано, что "for_each не специфицирует порядка обхода элементов". На первый взгляд в 25.1.1 сказано, что "for_each() аpplies f to the result of dereferencing every iterator in the range [first, last), starting from first and proceeding to last — 1.".

Именно. Гарантируется, что будет осуществлен доступ к каждому из элементов, но не описывается, в каком порядке.
И я где-то, кажестя у Саттера, читал предупреждение об этом моменте. Мол, смотрите, появится какой-нибудь хитрый for_each, который распараллелит обход на несколько процессоров и кирдык.

С другой стороны, ситуация какая-то маразматическая -- просто так нельзя делать параллельный for_each, т.к. функтор может быть не thread-safe. Так же, в STL нет метода обхода контейнера от начала к концу, аналогичному for_each, для которого порядок обхода гарантировался бы (либо я не знаю). Есть transform, но он для других целей.

Или, может быть, тот C++ гуру предупреждал, что for_each может делать обход от last-1 к first. И поэтому нельзя закладываться на порядок обхода.

В общем, было что-то мутноее с этим делом.

mnf>Операторы записываются не result_type operator(argument_type item), а result_type operator()(argument_type item);


Спасибо.

mnf>class selector_t не может быть объявлен там же, где используется for_each()


На самом деле там просто приведен схематичный код, без разделения на области видимости

mnf>Так что пока С++ выигрывает по очкам (IMO). Может имеет смысл подумать о гибридных системах: C++ — системные библиотеки, критические по скорости процедуры, старый код, а сверху над ними что-нибудь более удобное и очень простое (что это может быть я и сам не знаю — пробовал только Python, поэтому не столько советую, сколько спрашиваю)?


У меня пока не было задач, где можно было бы что-то подобное применить.

mnf>Удачи в поисках,


Спасибо.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[14]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.08.07 10:47
Оценка:
Здравствуйте, crable, Вы писали:

C>Я думаю, ты немного спутал термины. "Виртуальные полиморфные методы" это не виртуальные методы шаблонного ("полиморфного") класса, а шаблонные ("полиморфные") методы класса (не важно, обычного или шаблонного), т.е.


C>
C>// C++
C>struct foo
C>{
C>  template <typename T> void f() {} // компилируется
C>  virtual template <typename T> void b() {} // а здесь ошибка
C>};
C>


C>
C>// C#
C>abstract class Base
C>{
C>   public abstract T F<T,U>(T t, U u) where U : T;
C>}

C>class Derived: Base
C>{
C>   public override X F<X,Y>(X x, Y y) // Ok
C>   {
C>      return y;
C>   }
C>}
C>


Очень похоже на то.
Но какой в этом деле смысл и как это используется?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Ищется язык
От: BulatZiganshin  
Дата: 07.08.07 11:15
Оценка:
BZ>>ООП и полиморфизм — это разные вещи.

ANS>Иерархия классову и полиморфизм...


по-моему, единственное приницпиальное отличие ООП от всяких других систем типов — именно наличие иерархии классов

кстати вспомнил, в hopl-c++ и Степанов, и Страустрап в один голос утвержают, что темлплейты — это не ООП фича, и что сейчас С++ — гибридный язык
Люди, я люблю вас! Будьте бдительны!!!
Re[4]: Ищется язык
От: mnf  
Дата: 07.08.07 11:15
Оценка:
Здравствуйте, eao197, Вы писали:

mnf>>На первый взгляд в 25.1.1 сказано, что "for_each() аpplies f to the result of dereferencing every iterator in the range [first, last), starting from first and proceeding to last — 1.".


E>Именно. Гарантируется, что будет осуществлен доступ к каждому из элементов, но не описывается, в каком порядке.

E>И я где-то, кажестя у Саттера, читал предупреждение об этом моменте. Мол, смотрите, появится какой-нибудь хитрый for_each, который распараллелит обход на несколько процессоров и кирдык.

Можно ссылочку? По-моему, в Стандарте "starting from first and proceeding to last — 1" и означает "начиная c первого и продолжая до last — 1" — т.е. порядок доступа,
Что не так с моим английским? Кстати, в SGI описании STL for_each() это даже специально подчеркнуто "аpplications are performed in forward order, i.e. from first to last".
Re[8]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.08.07 11:25
Оценка: +1
Здравствуйте, BulatZiganshin, Вы писали:

BZ>кстати вспомнил, в hopl-c++ и Степанов, и Страустрап в один голос утвержают, что темлплейты — это не ООП фича, и что сейчас С++ — гибридный язык


С++ был гибридным языком с самого начала, еще даже до добавления в язык шаблонов.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[5]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.08.07 11:30
Оценка:
Здравствуйте, mnf, Вы писали:

mnf>>>На первый взгляд в 25.1.1 сказано, что "for_each() аpplies f to the result of dereferencing every iterator in the range [first, last), starting from first and proceeding to last — 1.".


E>>Именно. Гарантируется, что будет осуществлен доступ к каждому из элементов, но не описывается, в каком порядке.

E>>И я где-то, кажестя у Саттера, читал предупреждение об этом моменте. Мол, смотрите, появится какой-нибудь хитрый for_each, который распараллелит обход на несколько процессоров и кирдык.

mnf>Можно ссылочку? По-моему, в Стандарте "starting from first and proceeding to last — 1" и означает "начиная c первого и продолжая до last — 1" — т.е. порядок доступа,

mnf>Что не так с моим английским? Кстати, в SGI описании STL for_each() это даже специально подчеркнуто "аpplications are performed in forward order, i.e. from first to last".

Боюсь, что я сейчас уже не вспомню, где я это видел.

Но вот Google вот что отыскал: http://angelikalanger.com/Articles/Cuj/03.ForeachTransform/ForEachTransform.html

Выходит, что порядок не гарантирован для transform, но гарантирован для for_each. Значит, я перепутал алгоритмы


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Ищется язык
От: FR  
Дата: 12.08.07 05:31
Оценка:
Здравствуйте, eao197, Вы писали:

E>Удалось оформить причины, вынудившие меня задать этот вопрос, в виде небольшого раздела моей home page


E>В рамках этого же мероприятия получилось более плотно познакомиться с языком Eiffel.


То есть пока одна альтернатива ждать пока D устаканится?
Re[3]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 12.08.07 07:50
Оценка:
Здравствуйте, FR, Вы писали:

E>>Удалось оформить причины, вынудившие меня задать этот вопрос, в виде небольшого раздела моей home page


E>>В рамках этого же мероприятия получилось более плотно познакомиться с языком Eiffel.


FR>То есть пока одна альтернатива ждать пока D устаканится?


Ну, с учетом того, что Nice приказал долго жить, из нынешних стабильных языков можно выбирать, разве что, между Java и C#. Но я бы пока предпочел подождать стабилизации D и Scala. Хотя возможностей D1.0 мне сейчас хватит с лихвой, дело стоит за инструментами и библиотеками для него.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[10]: IDE для Haskell
От: johny5 Новая Зеландия
Дата: 20.08.07 23:09
Оценка:
BZ>недостатки же хаскела, как и любого другого не mainstream языка, связаны с отсутвием IDE (навигация по коду, визуальное редактирование ...


Visual Haskell?
Re[11]: IDE для Haskell
От: BulatZiganshin  
Дата: 21.08.07 15:42
Оценка:
Здравствуйте, johny5, Вы писали:

BZ>>недостатки же хаскела, как и любого другого не mainstream языка, связаны с отсутвием IDE (навигация по коду, визуальное редактирование ...



J>Visual Haskell?


глючное и половинчатое решение, если сравнивать его с уровнем поддержки того же C#

надёжная и вероятно на втором месте по функциональности — хаскел-мода для емакса. я им не пользуюсь, но рискну прелполождить, что там нет поддержки проектов, разумеется редактирования GUI, вряд ли есть подсказка по аргументам при наборе, поддержки отладчика и т.д.
Люди, я люблю вас! Будьте бдительны!!!
Re[5]: Ищется язык
От: FR  
Дата: 18.12.07 06:47
Оценка: +1
Здравствуйте, eao197, Вы писали:

Еще не нашел?

E>Да OCaml-то вроде по всем критериям подходит. Но опять же, не любитель я (пока?) функциональных языков. И это для OCaml самая большая проблема в моем лично случае.


Я тут (уже не первый раз ) начал ковырять Ocaml. В общем тебя обманули
Это вполне нормальный императивный язык.

let s = ref 0;;
let i = ref 0;;

while !i < 10 do
    s := !s + !i;
    i := !i + 1;
    done;;

Printf.printf "%d \n" !s;;


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

E>Меня ведь почему C++ не устраивает -- потому что вчерашних студентов за полгода-год на C++ нормально программировать не научишь (кстати, есть у меня предположение, что с Oberon-ом или Modula ситуация была бы совсем другой). Но C++ хоть императивный, а сейчас если чему-то и учат студентов, то именно императивным языкам. И мозги людям не нужно перестраивать, последовательный код и есть последовательный. А тут неопытного человека да с головой в функциональщину.


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

По моему если пересилить синтаксис то всем твоим критериям Ocaml удовлетворяет.
Re[6]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 18.12.07 08:59
Оценка: 6 (1)
Здравствуйте, FR, Вы писали:

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


FR>Еще не нашел?


Нет, пока не нашел Тем более, что у меня сейчас на C++ столько работы, что даже какой-нибудь proof-of-concept проектик на новом языке некогда начинать.

Но ближе всего к тому, что хотелось бы, сейчас для меня C# 3.0 (в особенности lambdas и extension methods симпатично выглядят). Тем более, что недавно вышедший Mono 1.2.6 декларирует практически полную поддержку C# 3.0.

OCaml тоже ничего. Вот и один из Rubyist-ов, Маурицио Фернандес OCaml-ом заинтересовался. Например, сделал на OCaml решение задачки WideFinder (правда для меня его реализация очень прозрачной и понятной не оказалась).

Однако, какова там ситуация с библиотеками и насколько качественна реализация OCaml для Windows -- еще вопрос.

FR>По моему если пересилить синтаксис то всем твоим критериям Ocaml удовлетворяет.


Возможно, нужно в нем покопаться более тчательно. Хотя мне Lazy Cjow Rhrr ссылочку подкинул (еще раз ): http://www.podval.org/~sds/ocaml-sucks.html -- кое-какие вещи там заставляют задуматься. Да и если сравнивать обеспеченность OCaml-а и C# всякими библиотеками, IDE, профайлерами, отладчиками и пр. лабудой, то вряд ли OCaml подойдет для того, чтобы за него садить вчерашних студентов.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Ищется язык
От: Didro Россия home~pages
Дата: 18.12.07 09:38
Оценка:
Здравствуйте, eao197, Вы писали:

E>Казалось бы, языков программирования море. Как говорят некоторые, каждый год появляется и исчезает порядка двухсот языков. А как начнешь выбирать что-нибудь достойное, так кроме C++, Java, C# и еще нескольких функциональных (OCaml, Haskell) ничего и не видно (это я утрирую, конечно, но не сильно).


E>В общем, ищется не сильно мейнстримовый язык, который бы удовлетворял следующим требованиям:


А средство для создания таких языков не подойдёт ?

Взять MPS от JetBrains, сделать на нем свой язык для своей предметной области и отобразить его хоть в Java, хоть в С++, хоть в C#. Да знаю, MPS ещё в бете, но думаю, его можно как один из вариантов рассматривать (покрайней мере решить на ней proof-of-concept точно стоит, )
Re[2]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 18.12.07 09:49
Оценка: :)
Здравствуйте, Didro, Вы писали:

D>А средство для создания таких языков не подойдёт ?


D>Взять MPS от JetBrains, сделать на нем свой язык для своей предметной области и отобразить его хоть в Java, хоть в С++, хоть в C#. Да знаю, MPS ещё в бете, но думаю, его можно как один из вариантов рассматривать (покрайней мере решить на ней proof-of-concept точно стоит, )


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

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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Ищется язык
От: FR  
Дата: 18.12.07 10:48
Оценка:
Здравствуйте, eao197, Вы писали:

E>Нет, пока не нашел Тем более, что у меня сейчас на C++ столько работы, что даже какой-нибудь proof-of-concept проектик на новом языке некогда начинать.


E>Но ближе всего к тому, что хотелось бы, сейчас для меня C# 3.0 (в особенности lambdas и extension methods симпатично выглядят). Тем более, что недавно вышедший Mono 1.2.6 декларирует практически полную поддержку C# 3.0.


Ты это осторожней

E>OCaml тоже ничего. Вот и один из Rubyist-ов, Маурицио Фернандес OCaml-ом заинтересовался. Например, сделал на OCaml решение задачки WideFinder (правда для меня его реализация очень прозрачной и понятной не оказалась).


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

E>Однако, какова там ситуация с библиотеками и насколько качественна реализация OCaml для Windows -- еще вопрос.


С библиотеками насколько я понял не очень хорошо.
По качеству реализации жалоб не слышал.

FR>>По моему если пересилить синтаксис то всем твоим критериям Ocaml удовлетворяет.


E>Возможно, нужно в нем покопаться более тчательно. Хотя мне Lazy Cjow Rhrr ссылочку подкинул (еще раз ): http://www.podval.org/~sds/ocaml-sucks.html -- кое-какие вещи там заставляют задуматься. Да и если сравнивать обеспеченность OCaml-а и C# всякими библиотеками, IDE, профайлерами, отладчиками и пр. лабудой, то вряд ли OCaml подойдет для того, чтобы за него садить вчерашних студентов.


Это да, в таких вещах нужна платформа. Я вот хочу пока попробовать небольшие модули для питона на Ocaml сделать, тем более наклевывается задачка на довольно сложный парсинг.
Re[3]: Ищется язык
От: Didro Россия home~pages
Дата: 18.12.07 11:36
Оценка:
Здравствуйте, eao197, Вы писали:

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


D>>А средство для создания таких языков не подойдёт ?


D>>Взять MPS от JetBrains, сделать на нем свой язык для своей предметной области и отобразить его хоть в Java, хоть в С++, хоть в C#. Да знаю, MPS ещё в бете, но думаю, его можно как один из вариантов рассматривать (покрайней мере решить на ней proof-of-concept точно стоит, )


E>Не, ну нафиг создание собственных языков.

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

Там речь о другом идет. Например, вот нет в Java языка для регулярных выражений, но есть куча Regexp-библиотек. Но библиотека не язык, сам понимаешь. Вот MPS позволяет встроить в Java DSL: язык регулярных выражений.

Выглядеть это будет вот так:


Так что это не совсем "создание собственных языков", инфраструктура базового языка остается доступной. Собственно тот же, SObjectizer , которого я к сожалению не знаю, если формально и не имеет собственного языка, то по факту строит этот язык на объектах (в этом смысле SObjectizer, как и любая объектно-ориентированная система, является DSL-ем)

Вот тут
Автор: Зверёк Харьковский
Дата: 16.04.06
хорошо сказал Зверёк Харьковский:

Вообще говоря, любое создание иерархии классов (или набора функций), отражающих предметную область — и есть создание DSL'я (о чем вполне однозначно говорит Дмитриев в статье). Просто мы это "так не называем".

То есть вот это — тоже DSL (надуманный пример на несуществующем языке):
window = new Window
button = new Button
button.size = (100, 25)
button.caption = 'WTF?'
window.layout(button)

Другое дело — что Дмитриев считает необходимым создать кучу визуальных тулзов, явно поддерживающих такой подход; а мы с Владом внезапно сошлись на том, что достаточно одного языка с ОЧЕНЬ выразительным синтаксисом.




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

Надеюсь, что нет.
Re[8]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 18.12.07 14:26
Оценка:
Здравствуйте, FR, Вы писали:

E>>Нет, пока не нашел Тем более, что у меня сейчас на C++ столько работы, что даже какой-нибудь proof-of-concept проектик на новом языке некогда начинать.


E>>Но ближе всего к тому, что хотелось бы, сейчас для меня C# 3.0 (в особенности lambdas и extension methods симпатично выглядят). Тем более, что недавно вышедший Mono 1.2.6 декларирует практически полную поддержку C# 3.0.


FR>Ты это осторожней


Имхо, сейчас нужно проявлять осторожность в игнорировании .NET-а, а не при переходе на него
MS пришла с .NET всерьез и надолго. За 6-ть лет в язык было добавлено больше, чем в Java за пятнадцать лет. И все это без серьезного груза совместимости с уже написанными мегатоннами Ынтырпрайз кода (как в случае с Java).

Так что игнорирование C# сейчас может выйти себе дороже

E>>Однако, какова там ситуация с библиотеками и насколько качественна реализация OCaml для Windows -- еще вопрос.


FR>С библиотеками насколько я понял не очень хорошо.

FR>По качеству реализации жалоб не слышал.

Где-то я недавно слышал, что один из основных разработчиков OCaml-а забил на претензии по поводу Windows-реализации. Мол, вне Unix нет шасця.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[9]: Ищется язык
От: Курилка Россия http://kirya.narod.ru/
Дата: 18.12.07 14:31
Оценка:
Здравствуйте, eao197, Вы писали:

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


E>>>Но ближе всего к тому, что хотелось бы, сейчас для меня C# 3.0 (в особенности lambdas и extension methods симпатично выглядят). Тем более, что недавно вышедший Mono 1.2.6 декларирует практически полную поддержку C# 3.0.


FR>>Ты это осторожней


E>Имхо, сейчас нужно проявлять осторожность в игнорировании .NET-а, а не при переходе на него

E>MS пришла с .NET всерьез и надолго. За 6-ть лет в язык было добавлено больше, чем в Java за пятнадцать лет. И все это без серьезного груза совместимости с уже написанными мегатоннами Ынтырпрайз кода (как в случае с Java).

Ява онаж вроде в 95-м появилась или я глючу? Откуда 15 лет?
Про мегатонны — это согласен, правда в мейнстриме это неизбежное зло.
Re[10]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 18.12.07 14:37
Оценка:
Здравствуйте, Курилка, Вы писали:

E>>Имхо, сейчас нужно проявлять осторожность в игнорировании .NET-а, а не при переходе на него

E>>MS пришла с .NET всерьез и надолго. За 6-ть лет в язык было добавлено больше, чем в Java за пятнадцать лет. И все это без серьезного груза совместимости с уже написанными мегатоннами Ынтырпрайз кода (как в случае с Java).

К>Ява онаж вроде в 95-м появилась или я глючу? Откуда 15 лет?


Во-первых, округлил
Во-вторых, насколько я помню, основной дизайн языка был готов еще в 93-м, в начале 94-го. После чего шла разработка JDK и подготовка Java к выпуску как платформу для Web апплетов.

К>Про мегатонны — это согласен, правда в мейнстриме это неизбежное зло.


Просто в отношении Java мейнстрим какой-то однобокий, в основном server side для корпоративных систем. Мобильные телефоны только совсем недавно стали достаточно мощными для нормальной поддержки Java приложений.

У меня складывается впечатление, что .NET сможет заползти в гораздо большее количество ниш, чем это сделала Java. Во многом благодоря очень близким отношениям с Windows.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[11]: Ищется язык
От: Курилка Россия http://kirya.narod.ru/
Дата: 18.12.07 14:44
Оценка:
Здравствуйте, eao197, Вы писали:

E>Просто в отношении Java мейнстрим какой-то однобокий, в основном server side для корпоративных систем. Мобильные телефоны только совсем недавно стали достаточно мощными для нормальной поддержки Java приложений.


Дак проблема в дополнительной платформе имхо, которую надо ставить и т.п. У сана рычагов в данной нише заметно поменьше чем у МС.

E>У меня складывается впечатление, что .NET сможет заползти в гораздо большее количество ниш, чем это сделала Java. Во многом благодоря очень близким отношениям с Windows.


Ну посмотрим, пока как-то он развивается-то развивается, а вот экспансии на рынке со своей точки зрения я не наблюдаю особо, хотя может быть не особо всматриваюсь.
Re[12]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 18.12.07 14:55
Оценка:
Здравствуйте, Курилка, Вы писали:

E>>У меня складывается впечатление, что .NET сможет заползти в гораздо большее количество ниш, чем это сделала Java. Во многом благодоря очень близким отношениям с Windows.


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


Ну экспансия и глобальный захват рынка -- это меня мало интересует.
А вот если выбирать платформу для начала какой-то новой разработки, которая делается с нуля, то оказывается, что C# 3.0
— содержит достаточное количество вкусностей для того, чтобы на нем программировать здесь и сейчас (локальный вывод типов, лямбды, генерики);
— имеет большую стандартную библиотеку .Net Framework;
— имеет хорошую поддержку со стороны средств разработки;
— имеет большое количество информационных ресурсов в виде книг, сайтов, форумов, курсов и пр.

Здесь ему достойную конкуренцию может составить разве что Java. Но, опять же, C# более молодой, динамичный. Так что если не брать в расчет какие-то имеющиеся наработки или еще какие-то факторы, то C# сейчас выглядит предпочтительнее Java.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 18.12.07 15:08
Оценка: +1
Здравствуйте, Didro, Вы писали:

D>Там речь о другом идет. Например, вот нет в Java языка для регулярных выражений, но есть куча Regexp-библиотек. Но библиотека не язык, сам понимаешь. Вот MPS позволяет встроить в Java DSL: язык регулярных выражений.


D>Выглядеть это будет вот так:

D>

Мне не очень нравится идея изменения синтаксиса основного языка для того, чтобы встроить в него некоторую новую функциональность. Наверное максимум, на который я согласен, это набор описаний на внешних языках, которые в pre- или compile-, или run-time разворачиваются в какой-то кода.

А подход, когда это расширение можно делать только в специально ориентированном для этого визуальном инструменте выглядит вообще диковато. Имхо, программа должна быть простым текстом, который можно быстро подправить хоть в Far-е, хоть в ViM-е, хоть в ed-е через ssh.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Ищется язык
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.12.07 23:56
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>Да и если сравнивать обеспеченность OCaml-а и C# всякими библиотеками, IDE, профайлерами, отладчиками и пр. лабудой, то вряд ли OCaml подойдет для того, чтобы за него садить вчерашних студентов.


F#?
... << RSDN@Home 1.2.0 alpha rev. 725 on Windows Vista 6.0.6000.0>>
AVK Blog
Re[8]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 19.12.07 05:51
Оценка:
Здравствуйте, AndrewVK, Вы писали:

E>>Да и если сравнивать обеспеченность OCaml-а и C# всякими библиотеками, IDE, профайлерами, отладчиками и пр. лабудой, то вряд ли OCaml подойдет для того, чтобы за него садить вчерашних студентов.


AVK>F#?


Насколько я понял из ссылок на блоги разработчиков F#, которые здесь недавно проскакивали, F# еще не стабилизировался полностью.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[9]: Ищется язык
От: Shabi  
Дата: 19.12.07 11:40
Оценка: :))
Здравствуйте, eao197, Вы писали:

на клиентской стороне очень рекомендую ActionScript 3.0
About ActionScript

    ActionScript 3.0 offers a robust programming model that will be familiar to developers with a basic knowledge of object-oriented programming. Some of the key features of ActionScript 3.0 include the following:

    A new ActionScript Virtual Machine, called AVM2, that uses a new bytecode instruction set and provides significant performance improvements

    A more modern compiler code base that adheres much more closely to the ECMAScript (ECMA 262) standard and that performs deeper optimizations than previous versions of the compiler

    An expanded and improved application programming interface (API), with low-level control of objects and a true object-oriented model

    A core language based on the upcoming ECMAScript (ECMA-262) edition 4 draft language specification
    An XML API based on the ECMAScript for XML (E4X) specification (ECMA-357 edition 2). E4X is a language extension to ECMAScript that adds XML as a native data type of the language.

    An event model based on the Document Object Model (DOM) Level 3 Events Specification



мне очень нравица...лучше чем JAVA однозначна
Re[10]: Ищется язык
От: Left2 Украина  
Дата: 19.12.07 11:46
Оценка:
Боюсь тебя смутить, но абсолютно такой же язык встроен в Internet Explorer и Mozilla. Javascript называется
... << RSDN@Home 1.2.0 alpha rev. 717>>
Re[11]: Ищется язык
От: Shabi  
Дата: 19.12.07 14:01
Оценка: :)
Здравствуйте, Left2, Вы писали:

L>Боюсь тебя смутить, но абсолютно такой же язык встроен в Internet Explorer и Mozilla. Javascript называется


совершенно не смутит... ибо пожеланиям автора ветки полностью удовлетворяет

Обязательные требования
* бесплатный, а еще лучше свободный. Не важно, под какой лицензией будет сам компилятор, важно, чтобы лицензии на run-time и основные стандартные библиотеки были под нормальными лицензиями (BSD, MIT, X, LGPL, Apache и пр.), допускающими использование в закрытых проектах;
* статически типизированный и компилируемый;
* безопасный. Т.е. либо работающий на какой-нибудь виртуальной машине, либо компилируемый в нативный код, но с тотальными проверками (в частности, указателей и индексов на валидность);
* со сборкой мусора;
* с поддержкой исключений (крайне желательно с поддержкой stack trace "из коробки");
* живой и более-менее стабильный. Т.е. язык, для которого переодически выходят релизы и вокруг которого есть живое сообщество;
* наличие готовых "родных" реализаций, как минимум, для Windows и какого-нибудь Linux/BSD. На крайний случай подойдет и поддержка Windows через Cygwin/MSYS.

Очень желательные требования
* объектно-ориентированный;
* быстрый.

Желательные требования
* оснащенность библиотеками.


JS по выделенным пунктам пролетает
Re[12]: Ищется язык
От: Left2 Украина  
Дата: 19.12.07 14:27
Оценка:
Пойми, мил человек — я не сравниваю ActionScript с JavaScript Просто потому что это один и тот же язык (он же ECMAScript), только с разными библиотеками/фреймвоками и встроенный в разные программы. И по скорости ActionScript никак не будет шустрее JavaScript, разница будет как между разными компиляторами/интерпретаторами одного и того же языка. Ну и про компилируемость ты наверное шутишь...
... << RSDN@Home 1.2.0 alpha rev. 717>>
Re[13]: Ищется язык
От: Left2 Украина  
Дата: 19.12.07 14:41
Оценка:
L>И по скорости ActionScript никак не будет шустрее JavaScript, разница будет как между разными компиляторами/интерпретаторами одного и того же языка.
Я имел в виду разницу между компиляторами для компилируемых языков и интерпретаторами для интерпретируемых А то с моим косноязычием можно подумать что разница будет как между компилятором и интерпритатором для одного и того же языка...
... << RSDN@Home 1.2.0 alpha rev. 717>>
Re[6]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.12.07 15:06
Оценка: +1
Здравствуйте, FR, Вы писали:

FR>По моему если пересилить синтаксис то всем твоим критериям Ocaml удовлетворяет.


Но синтаксис откровенно говоря 99% людей и остановит. Потому лично я и считаю, что в мэйнстрим он не пройдет.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.12.07 15:06
Оценка:
Здравствуйте, eao197, Вы писали:

E>Возможно, нужно в нем покопаться более тчательно. Хотя мне Lazy Cjow Rhrr ссылочку подкинул (еще раз ): http://www.podval.org/~sds/ocaml-sucks.html -- кое-какие вещи там заставляют задуматься. Да и если сравнивать обеспеченность OCaml-а и C# всякими библиотеками, IDE, профайлерами, отладчиками и пр. лабудой, то вряд ли OCaml подойдет для того, чтобы за него садить вчерашних студентов.


Ты бы поглядел с чем автор статьи сравненивает ОКамл. Тебя бы наверно улыбнуло... Он сравнивает ОКамл с Лиспом. Дума, те кто понимает что такое Лисп уже все поняли.

ЗЫ

Кстати, о птичках. Все перечисленные недостатки устранены. Даже с синтаксисом проблем нет. При этом весь фан ОКамла остался на месте. Вот только привязка к дотнету/моно. Ну, и вывод типов не по все программе, а только для кода методов. Ну, и все что есть в C# 3.0 в нем тоже есть. Линк, вот правда, еще надо прикрутить.7
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.12.07 15:06
Оценка: :))
Здравствуйте, eao197, Вы писали:

E>Имхо, сейчас нужно проявлять осторожность в игнорировании .NET-а, а не при переходе на него

E>MS пришла с .NET всерьез и надолго. За 6-ть лет в язык было добавлено больше, чем в Java за пятнадцать лет. И все это без серьезного груза совместимости с уже написанными мегатоннами Ынтырпрайз кода (как в случае с Java).

E>Так что игнорирование C# сейчас может выйти себе дороже


Ого! От кого я слышу эти слова?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.12.07 15:06
Оценка:
Здравствуйте, Shabi, Вы писали:
S>

S>* статически типизированный и компилируемый;
S>* быстрый.
S>* оснащенность библиотеками.


S>JS по выделенным пунктам пролетает


Это и есть JS к которому пару финтифлюшек припаяли. Реально типизации в байткоде нет. И компиляции тоже. Так что это рекламный балшит.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.12.07 15:06
Оценка: +1 :))) :))
Здравствуйте, eao197, Вы писали:

E>А подход, когда это расширение можно делать только в специально ориентированном для этого визуальном инструменте выглядит вообще диковато. Имхо, программа должна быть простым текстом, который можно быстро подправить хоть в Far-е, хоть в ViM-е, хоть в ed-е через ssh.


Казалось бы причем тут...

э... ухожу, ухожу.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Ищется язык
От: FR  
Дата: 19.12.07 16:41
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Кстати, о птичках. Все перечисленные недостатки устранены. Даже с синтаксисом проблем нет. При этом весь фан ОКамла остался на месте.


Не весь, классы в Ocaml класснее, да и языки без оператора "+." ущербны
Re[9]: Ищется язык
От: EvilChild Ниоткуда  
Дата: 19.12.07 18:45
Оценка:
Здравствуйте, FR, Вы писали:

VD>>Кстати, о птичках. Все перечисленные недостатки устранены. Даже с синтаксисом проблем нет. При этом весь фан ОКамла остался на месте.


FR>Не весь, классы в Ocaml класснее, да и языки без оператора "+." ущербны


Ещё функторов там нет, зато есть монады, спрятанные под именем computation expressions .
now playing: Scorn — Stripped Back Hinge
Re[10]: Ищется язык
От: FR  
Дата: 19.12.07 18:56
Оценка:
Здравствуйте, EvilChild, Вы писали:

EC>Ещё функторов там нет, зато есть монады, спрятанные под именем computation expressions .


Функторы в SML есть, вообще окамл по сравнению с SML верблюд верблюдом
Re[11]: Ищется язык
От: EvilChild Ниоткуда  
Дата: 19.12.07 20:04
Оценка:
Здравствуйте, FR, Вы писали:

EC>>Ещё функторов там нет, зато есть монады, спрятанные под именем computation expressions .


FR>Функторы в SML есть, вообще окамл по сравнению с SML верблюд верблюдом


Я про то, что они есть в OCaml, но отсутствуют в F#.
now playing: Scorn — Rove
Re[13]: Ищется язык
От: Shabi  
Дата: 20.12.07 04:55
Оценка:
Здравствуйте, VladD2, Вы писали:

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

S>>

S>>* статически типизированный и компилируемый;
S>>* быстрый.
S>>* оснащенность библиотеками.


S>>JS по выделенным пунктам пролетает


VD>Это и есть JS к которому пару финтифлюшек припаяли. Реально типизации в байткоде нет.


In ActionScript 3.0, type information is preserved at run time, and used for a number of purposes. Flash Player 9 performs run-time type checking, improving the system's type safety. Type information is also used to represent variables in native machine representations, improving performance and reducing memory usage.

ActionScript 3.0 contains the int and uint types. The int type is a 32-bit signed integer that lets ActionScript code take advantage of the fast integer math capabilities of the CPU. The int type is useful for loop counters and variables where integers are used. The uint type is an unsigned, 32-bit integer type that is useful for RGB color values, byte counts, and more.


VD>И компиляции тоже.


About the Flex compilers


VD>Так что это рекламный балшит.


мдя...

только взял боец гитару — сразу видно гармонист

...
про немерле у тебя лучше получаеца
Re[14]: Ищется язык
От: Курилка Россия http://kirya.narod.ru/
Дата: 20.12.07 06:43
Оценка:
Здравствуйте, Shabi, Вы писали:

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


VD>>Это и есть JS к которому пару финтифлюшек припаяли. Реально типизации в байткоде нет.


S>

S>In ActionScript 3.0, type information is preserved at run time, and used for a number of purposes. Flash Player 9 performs run-time type checking, improving the system's type safety. Type information is also used to represent variables in native machine representations, improving performance and reducing memory usage.

S>

S>ActionScript 3.0 contains the int and uint types. The int type is a 32-bit signed integer that lets ActionScript code take advantage of the fast integer math capabilities of the CPU. The int type is useful for loop counters and variables where integers are used. The uint type is an unsigned, 32-bit integer type that is useful for RGB color values, byte counts, and more.


VD>>И компиляции тоже.


И? Написано же type information is preserved at run time, т.е. проверка типов откладывается до рантайма, т.е. типизация динамическая. Хотя, видимо, Влад был не совсем корректен: нет статической типизации, типобезопасности можно добиться и в рантайме, правда поимев накладные расходы, исключения и т.п.
Re[15]: Ищется язык
От: Shabi  
Дата: 20.12.07 07:30
Оценка:
Здравствуйте, Курилка, Вы писали:


начальная посылка была

VD>Реально типизации в байткоде нет

здесь Adobe ActionScript Virtual Machine 2 (AVM2) Overview

4.5 Method signature
The method_info entry defines the signature of a single method.
method_info
{
u30 param_count
u30 return_type
u30 param_type[param_count]

u30 name
u8 flags
option_info options
param_info param_names
}
The fields are as follows:
param_count, param_type
The param_count field is the number of formal parameters that the method supports; it also represents
the length of the param_type array. Each entry in the param_type array is an index into the multiname
Adobe ActionScript Virtual Machine 2 (AVM2) Overview 25
array of the constant pool; the name at that entry provides the name of the type of the corresponding
formal parameter. A zero value denotes the any (“*”) type.
return_type
The return_type field is an index into the multiname array of the constant pool; the name at that entry
provides the name of the return type of this method. A zero value denotes the any (“*”) type.




К>И? Написано же type information is preserved at run time, т.е. проверка типов откладывается до рантайма, т.е. типизация динамическая. Хотя, видимо, Влад был не совсем корректен: нет статической типизации, типобезопасности можно добиться и в рантайме, правда поимев накладные расходы, исключения и т.п.


это зависит...
в большинстве случаев компилятор ругаеца. исключая естественно тип *
Re[16]: Ищется язык
От: Курилка Россия http://kirya.narod.ru/
Дата: 20.12.07 07:36
Оценка:
Здравствуйте, Shabi, Вы писали:

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



S>начальная посылка была

S>

VD>Реально типизации в байткоде нет

[cut]
Про формулировку я написал.

S>это зависит...

От чего зависит?
S>в большинстве случаев компилятор ругаеца. исключая естественно тип *
Чем описывается "большинство"?
Скажем в "традиционных" языках типа Явы и Шарпа, практически единственным способом получить проблемы с типами является приведение типов, ну и рефлексия как вариант приведения, по сути (только информация о типах строчками представлена).
Re[12]: Ищется язык
От: FR  
Дата: 20.12.07 07:53
Оценка:
Здравствуйте, EvilChild, Вы писали:

EC>Я про то, что они есть в OCaml, но отсутствуют в F#.


А мы разве про F# , кстати в SML.NET функторы есть, но ограничены при использовании с NET класами.
Re[17]: Ищется язык
От: Shabi  
Дата: 20.12.07 08:19
Оценка:
Здравствуйте, Курилка, Вы писали:


К>Чем описывается "большинство"?


ActionScript offers two different modes for compiling a program: strict mode and
standard mode. In strict mode, the compiler reports more errors than in standard
mode. The extra strict-mode errors are intended to help programmers locate potential
sources of problems in a program before the program actually runs. Strict mode
is, therefore, enabled by default in all of Adobe’s compilers. Programmers who wish
to use ActionScript’s dynamic features (as described in Chapter 15,), or who simply
prefer to solve problems (i.e., debug) at runtime rather than at compile time can
choose to compile using standard mode.

......

The following questionable acts of programming will cause a compiler error in strict
mode, but not in standard mode:
• Supplying the wrong number or types of parameters to a function
• Defining two variables or methods with the same name
• Accessing methods and variables that are not defined at compile time (but might be defined at runtime)
• Assigning a value to a nonexistent instance variable of an object whose class is not dynamic
• Assigning a value to a constant variable anywhere other than the variable’s initializer
or, for instance variables, the constructor method of the class containing
the variable’s definition
• Attempting to delete (via the delete operator) an instance method, instance variable,
static method, or static variable
• Comparing two incompatibly typed expressions
• Assigning a value to a type-annotated variable where the value is not a member of the declared type
• Referring to nonexistent packages



Re[18]: Ищется язык
От: Курилка Россия http://kirya.narod.ru/
Дата: 20.12.07 08:24
Оценка: +1
Здравствуйте, Shabi, Вы писали:

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



К>>Чем описывается "большинство"?


S>

S>ActionScript offers two different modes for compiling a program: strict mode and
S>standard mode.
[cut]


S>


Напоминает недо-VB.Net. Для параметров функций, я так понимаю нет типизации?
Какие-то всё сугубо локальные ограничения, т.е. мелкие затычки против явных багов.
До статической типизации далековато имхо.
Re[18]: Ищется язык
От: Shabi  
Дата: 20.12.07 08:35
Оценка: 6 (1)
Здравствуйте, Shabi, Вы писали:

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



К>>Чем описывается "большинство"?


и это кста. "не вечер"... ActionScript 3.0 (по ставнению с 2.0 огромный, качествеенный скачёк) сейчас на том уровне, что вполне комфортно можно можно писать... даже пересаживаясь с JAVA.
не спроста эти жЫрные коты в сане и микрософте зашевелились.
Re[19]: Ищется язык
От: Shabi  
Дата: 20.12.07 08:57
Оценка:
Здравствуйте, Курилка, Вы писали:


К>Напоминает недо-VB.Net. Для параметров функций, я так понимаю нет типизации?


нет неправильно понимаешь.

• Assigning a value to a type-annotated variable where the value is not a member of the declared type


function f(arg:String):Object
      {
      }
//ругаеца нет говорит возвращаемого значения

function f(arg:String):Object
     { 
      return null;
     }
.........

f(23);//плохо
var ret:int=f("");//плохо


К>Какие-то всё сугубо локальные ограничения, т.е. мелкие затычки против явных багов.

К>До статической типизации далековато имхо.

а теперь? все равно в морг?
Re[20]: Ищется язык
От: Курилка Россия http://kirya.narod.ru/
Дата: 20.12.07 09:04
Оценка:
Здравствуйте, Shabi, Вы писали:

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



К>>Напоминает недо-VB.Net. Для параметров функций, я так понимаю нет типизации?


S>нет неправильно понимаешь.


[cut]

S>а теперь? все равно в морг?


Дак почему в морг? Я против динамической типизации ничего не имею.
Просто не уверен, что оно делает "полную" статическую проверку (иначе у нас был бы статически-типизированный язык и режим без проверки вообще никакого смысла бы не имел).
P.S. Кавычки стоят, т.к. даже Java/C# и иже с ними допускают нарушения типизации по сути, хоть и более-менее контролируемые.
Re[21]: Ищется язык
От: Shabi  
Дата: 20.12.07 09:18
Оценка:
Здравствуйте, Курилка, Вы писали:

S>>а теперь? все равно в морг?


К>Дак почему в морг? Я против динамической типизации ничего не имею.

я тоже...но речь не о том. с чего все началось и чем продолжилось.

резюме: как считаешь, по пункту

* статически типизированный и компилируемый;


его можно советовать зачинателю ветки?
Re[22]: Ищется язык
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 20.12.07 09:26
Оценка:
Здравствуйте, Shabi, Вы писали:

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


S>>>а теперь? все равно в морг?


К>>Дак почему в морг? Я против динамической типизации ничего не имею.

S>я тоже...но речь не о том. с чего все началось и чем продолжилось.

S>резюме: как считаешь, по пункту

S>

* статически типизированный и компилируемый;


S>его можно советовать зачинателю ветки?


Нельзя, т.к. client-side меня не интересует
Но за участие в обсуждении спасибо!


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[19]: Ищется язык
От: Left2 Украина  
Дата: 20.12.07 12:01
Оценка:
К>>>Чем описывается "большинство"?

S>и это кста. "не вечер"... ActionScript 3.0 (по ставнению с 2.0 огромный, качествеенный скачёк) сейчас на том уровне, что вполне комфортно можно можно писать... даже пересаживаясь с JAVA.

S>не спроста эти жЫрные коты в сане и микрософте зашевелились.

Давай называть вещи своими именами — это не скачок между ActionScript 2.0 и ActionScript 3.0, это развитие ECMAScript. Посмотри на реализацию JS в современной мозилле — увидишь те же самые фичеры, т.к. это суть один и тот же язык.

А сан с майкрософтом в чём виноваты, кстати? Они тоже в меру сил и возможностей ECMAScript реализуют — JScript в нотации майкрософт и встроенный в Java 1.5 интерпретатор ECMAScript (название его не помню, т.к. немного не в теме).
... << RSDN@Home 1.2.0 alpha rev. 717>>
Re[20]: Ищется язык
От: Shabi  
Дата: 20.12.07 12:11
Оценка:
Здравствуйте, Left2, Вы писали:

К>>>>Чем описывается "большинство"?


S>>и это кста. "не вечер"... ActionScript 3.0 (по ставнению с 2.0 огромный, качествеенный скачёк) сейчас на том уровне, что вполне комфортно можно можно писать... даже пересаживаясь с JAVA.

S>>не спроста эти жЫрные коты в сане и микрософте зашевелились.

L>А сан с майкрософтом в чём виноваты, кстати?


я имел ввиду silverlight & javafx
не о виновности разговор....
Re[14]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.12.07 15:57
Оценка:
Здравствуйте, Shabi, Вы писали:

Слушай, можешь верить в рекламный балшит. Кто же тебе запретит то?

Попробуй создать простой тест производительности.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.12.07 15:57
Оценка:
Здравствуйте, Shabi, Вы писали:

S>я имел ввиду silverlight & javafx

S>не о виновности разговор....

Дык, заметь. Они не АкшонСкрип тырят. А идею Флэша.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.12.07 15:57
Оценка:
Здравствуйте, FR, Вы писали:

FR>А мы разве про F# , кстати в SML.NET функторы есть, но ограничены при использовании с NET класами.


Что вы фанкторами называете?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Ищется язык
От: EvilChild Ниоткуда  
Дата: 20.12.07 21:06
Оценка:
Здравствуйте, VladD2, Вы писали:

FR>>А мы разве про F# , кстати в SML.NET функторы есть, но ограничены при использовании с NET класами.


VD>Что вы фанкторами называете?


Ф<b>у</b>нкторы
now playing: Scorn — The Palomar
Re[14]: Ищется язык
От: FR  
Дата: 21.12.07 07:56
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Что вы фанкторами называете?


Грубо полиморфный загрузчик модулей, позволяет жестко типизированному языку иметь модульность на уровне динамических языков, например можно сделать полную эмуляцию ООП (в смысле наследования и полиморфизма) на модулях. Ну и как следствие модули в ML являеются как и функции первоклассными объектами.
Re[15]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.12.07 13:21
Оценка:
Здравствуйте, FR, Вы писали:

FR>Грубо полиморфный загрузчик модулей, позволяет жестко типизированному языку иметь модульность на уровне динамических языков, например можно сделать полную эмуляцию ООП (в смысле наследования и полиморфизма) на модулях. Ну и как следствие модули в ML являеются как и функции первоклассными объектами.


Т.е. нечто вроде интерфейсов? Ясно...
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Ищется язык
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 21.12.07 13:49
Оценка: +1
VD>Т.е. нечто вроде интерфейсов? Ясно...

Скорее типа шаблонов в С++.
Re[17]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.12.07 11:46
Оценка:
Здравствуйте, D. Mon, Вы писали:

VD>>Т.е. нечто вроде интерфейсов? Ясно...


DM>Скорее типа шаблонов в С++.


Шаблоны как раз не способны экспортировать интерфейс вне модуля. По крайней мере в доступных мне компиляторах С++ экспорт не реализован.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Ищется язык
От: FR  
Дата: 23.12.07 09:41
Оценка:
Здравствуйте, VladD2, Вы писали:

DM>>Скорее типа шаблонов в С++.


VD>Шаблоны как раз не способны экспортировать интерфейс вне модуля. По крайней мере в доступных мне компиляторах С++ экспорт не реализован.


Невозможность экспорта это деталь реализации.
Функторы сильно схожи с шаблонами в том что также могут параметризироватся. Вот например использование функтора Make из стандартного модуля Set:
module Int_set = Set.Make(
    struct
        type t = int
        let compare = compare
    end
    );;

Здесь объявлется модуль Set параметризированный структурой содержащей нужный тип и функцию сравнения. На С++ шаблонах получается очень похоже:
typedef std::set<int, std::less<int> > Int_set;
Re[18]: Ищется язык
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 23.12.07 11:27
Оценка:
VD>Шаблоны как раз не способны экспортировать интерфейс вне модуля. По крайней мере в доступных мне компиляторах С++ экспорт не реализован.

Аналогом интерфейсов в Окамле скорее служат модули.
Re[19]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.07 12:08
Оценка:
Здравствуйте, D. Mon, Вы писали:

VD>>Шаблоны как раз не способны экспортировать интерфейс вне модуля. По крайней мере в доступных мне компиляторах С++ экспорт не реализован.


DM>Аналогом интерфейсов в Окамле скорее служат модули.


А ты то про что говорил?

Или я уже ничего не понимаю...
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Ищется язык
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 26.12.07 14:49
Оценка:
VD>А ты то про что говорил?

Про функторы. Т.е. получаются аналогии: модули — интерфейсы, функторы — шаблоны.
Re[21]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.07 13:54
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Про функторы. Т.е. получаются аналогии: модули — интерфейсы, функторы — шаблоны.


Все же я этого понять не могу. Можно подробно обяснить?

Как я понимаю модуль есть вещь статическая. Экзепляр модуля не создашь. Интерфейс есть публичное описание набора методов объекта которое можно полиморфно реализовывать в разных типах. Вот пример на C# 2.0:
interface IClonable<T>
{
  T Clone();
}

class A : IClonable<A>
{
  public A(int x) { _x = x; }
  int _x;
    public A Clone()
    {
        return new A(_x);
    }
}

class B : IClonable<B>
{
  public B(string y) { _y = y; }
  string _y;
    public A Clone()
    {
        return new A(_y);
    }
}

static class TestModule
{
    public static void Test<T>(IClonable<T> clonable)
    {
        T copy = clonable.Clone();
        // ... use copy
    }
    
    static void Main()
    {
        Test<T>(new A(123));
        Test<T>(new B("Test"));
    }
}

Здесь мне все очевидно. А как тоже самое будет выглядеть на ОКамле?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: Ищется язык
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 27.12.07 16:40
Оценка:
Вот примерный аналог. Я заменил Clone на чуть более интересную функцию удвоения, которая число умножает на два, а строку повторяет два раза.

module type Doubleable = (* тут как бы абстрактный интерфейс *)
   sig
     type t
     val double: t -> t (* наша операция *)
   end;;
   
module A = (* реализация интерфейса с интом *)
   struct
     type t = int
     let double x = x * 2
   end;; 

module B = (* реализация интерфейса со строкой *)
   struct
     type t = string
     let double x = x ^ x
   end;; 

module TestModule = (* функтор - как бы шаблон, параметризованный нашим интерфейсом *)
   functor (Smthng: Doubleable) ->
     struct 
       let test x = Smthng.double x     
     end;;
   
module TestModuleA = TestModule(A);; (* подстановка шаблона для получения конкретного типа *)
module TestModuleB = TestModule(B);;

print_int(TestModuleA.test 2);; (* использование конкретных типов *)
print_string(TestModuleB.test "hi");;


Этот код выводит на экран "4hihi", проверял.
Re[8]: Ищется язык
От: Алексей.  
Дата: 28.12.07 17:01
Оценка:
СТ>Зато баги правят сильно оперативнее. Да и насколько сложилось впечатление, что в нем нет только Windows-specific вещей, вроде поддержки COM+

Вот эту https://bugzilla.novell.com/show_bug.cgi?id=314903 ошибку 3,5 года пытаются исправить.
Re[9]: Ищется язык
От: anton_t Россия  
Дата: 29.12.07 06:50
Оценка:
Здравствуйте, Алексей., Вы писали:

СТ>>Зато баги правят сильно оперативнее. Да и насколько сложилось впечатление, что в нем нет только Windows-specific вещей, вроде поддержки COM+


А>Вот эту https://bugzilla.novell.com/show_bug.cgi?id=314903 ошибку 3,5 года пытаются исправить.


Судя по тому, что это normal P3 его ещё столько же чинить будут
Re[23]: Ищется язык
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.12.07 11:19
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Вот примерный аналог. Я заменил Clone на чуть более интересную функцию удвоения, которая число умножает на два, а строку повторяет два раза.


И зачем это потребовалось? Творчество не всегда дает положительный результат.

DM>
DM>module TestModule = (* функтор - как бы шаблон, параметризованный нашим интерфейсом *)
DM>   functor (Smthng: Doubleable) ->
DM>     struct 
DM>       let test x = Smthng.double x     
DM>     end;;
DM>


Ну, и что мы выидим? В итоге ты воспользовался тем самым фанктором.

В коде на C# шаблонов не было и быть не могло, так как язык этого не поддерживает.

В вобщем, на мой взгляд, фанктор это все же ближе к интерфейсу, хотя прямой аналогии тут нет. Ну, а обобщенность — это уже скорее свойсво языка. Мы ведь и простую функцию можем сделать обобщенныой.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[24]: Ищется язык
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 29.12.07 14:47
Оценка:
DM>>Вот примерный аналог. Я заменил Clone на чуть более интересную функцию удвоения, которая число умножает на два, а строку повторяет два раза.

VD>И зачем это потребовалось?


Чтобы продемонстрировать применение функторов. Поскольку модули похожи на статические классы, клонировать там нечего.
Вообще, более близким аналогом твоего примера в Окамле будет
class a x =
  object
    val mutable _x = x
    method clone = new a _x    
  end;;
  
let test c =
  let copy = c#clone in
  (*...use copy *) 
  ();;
  
test(new a 123);;
test(new a "Test");;

(успешно компилируется, но ничего не выводит, результата не видно)
В Окамле есть и классы, и объекты, и интерфейсы, и наследование (в том числе множественное), и полиморфизм на уровне классов и функций. Только при переписывании твоего примера почти ничего из этого не понадобилось. На уровне модулей есть сигнатуры модулей — аналог интерфейсов, реализации модулей (структуры) — аналог классов, реализующих интерфейсы, и есть функторы, которые описываются как функции над модулями. И ближайший аналог им — генерики С# или шаблоны С++. Если интерфейс в С++/C# (сигнатура модулей в Окамле)- способ абстрагирования от реализации, то шаблоны/генерики в С++/C# (функторы в Окамле) — абстрагирование от типа. Причем как в C# есть конструкция where для уточнения типа-параметра, так и в Окамле можно его уточнить. Но уточнение (указание интерфейсов) в обоих языках требуется не всегда.

module TestModule = functor (Smthng: Doubleable) -> ...

это прямой аналог
static class TestModule <Smthng> where Smthng:Doubleable { ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.