Re[4]: Это прекрасно, я считаю
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 13.04.13 13:16
Оценка: +1 :)
Здравствуйте, FR, Вы писали:

FR>откручивают хвост околофункциональный язык курит в сторонке .


Околофункциональный язык версии 0.6. Ы?
Re[6]: Local variables may shadow earlier declarations
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.04.13 22:49
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Мне несколько раз компилятор давал по рукам за такое и каждый раз это был реальный баг. Мне сложно представить ради каких мнимых удобств нужна такая дыра в безопасности. Расскажешь?


Даю точное предсказание. Язык не поддерживал неизменяемых переменных и ты косячил с изменяемыми. Так?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Это прекрасно, я считаю
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.04.13 22:53
Оценка: -1 :)
Здравствуйте, Jack128, Вы писали:

J>https://mail.mozilla.org/pipermail/rust-dev/2013-April/003557.html


Такой язык сразу идет в топку, в наше время. Надеюсь, что авторы передумают через некоторое время.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Это прекрасно, я считаю
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.04.13 22:57
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Я считаю что это пофигу, так как:


KP>*] Рекурсии используются редко;


Когда ты пишешь в императивном стиле. В функциональном очень часто.

KP>*] Рекурсии затрудняют понимание кода;


Просто домыслы. На практике все наоборот. Это циклы затрудняют изучение кода.

KP>*] Всегда надо думать о том, поддерживается ли хвостовая рекурсия данным конкретным компилятором;


Любой язык претендующий на звание "поддерживает ФП" декларирует оптимизацию хвостовой рекурсии в своем описании. Так что компилятор ее не поддерживающий не будет компилятором этого зыка.

KP>*] В конце концов кто-нибудь добавит поддержку данной не шибко полезной оптимизации и в Rust.


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

Короче, странно, что ты обратил внимание на язык с ФП-основой, раз так мыслишь. Попробуй по программировать на любом ФЯ и тот час же поменяешь мнение. Я когда писал на С и Шарпе тоже не понимал зачем это нужно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Это прекрасно, я считаю
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.04.13 22:59
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Околофункциональный язык версии 0.6. Ы?


Думаешь многие будут ждать и надеяться на изменение точки зрения авторов? Основная масса просто забьет на язык.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Развитие Rust
От: Kubyshev Andrey  
Дата: 14.04.13 00:57
Оценка:
V>Простота залог успеха. Тут намутили так, что надо разбираться.

Я думаю этим Растом застраховали себя от бОльшего числа ошибок которые приходится править сейчас.
Типа вот эта передача уник. указателя или передача в поток обхекта на стеке.
Re[4]: Это прекрасно, я считаю
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 14.04.13 04:53
Оценка: +1 :)
Здравствуйте, VladD2, Вы писали:

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


Это язык для людей с хорошим знанием C и С++. И им, в 9 из 10 случаем, на хвостовую рекурсию глубоко все равно. Ну а то что апологеты Nemerle будут считать Rust полностью бесполезным, думаю не является очень уж большой проблемой. Точнее совсем не является проблемой
Re[5]: Это прекрасно, я считаю
От: samius Япония http://sams-tricks.blogspot.com
Дата: 14.04.13 04:59
Оценка: +2
Здравствуйте, kaa.python, Вы писали:

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


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


KP>Это язык для людей с хорошим знанием C и С++. И им, в 9 из 10 случаем, на хвостовую рекурсию глубоко все равно. Ну а то что апологеты Nemerle будут считать Rust полностью бесполезным, думаю не является очень уж большой проблемой. Точнее совсем не является проблемой

Почему только апологетов Nemerle? Вообще всех, считающих странным неприветствие функционального стиля в околофункциональном языке.
Re[7]: Local variables may shadow earlier declarations
От: MTD https://github.com/mtrempoltsev
Дата: 14.04.13 09:36
Оценка: +2
Здравствуйте, VladD2, Вы писали:

MTD>>Мне несколько раз компилятор давал по рукам за такое и каждый раз это был реальный баг. Мне сложно представить ради каких мнимых удобств нужна такая дыра в безопасности. Расскажешь?


VD>Даю точное предсказание. Язык не поддерживал неизменяемых переменных и ты косячил с изменяемыми. Так?


В современных мейнстримовых языках (например, С++, Java) компилятор не дает накосячить таким образом — это привычно для многих, поэтому мне не понятно ради каких удобств надо так конфьюзить разработчиков? Ну вот кто нибудь в состоянии привести внятный пример?
Re[6]: Это прекрасно, я считаю
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 14.04.13 09:42
Оценка: +3
Здравствуйте, VladD2, Вы писали:

VD>Думаешь многие будут ждать и надеяться на изменение точки зрения авторов? Основная масса просто забьет на язык.


Язык версии 0.6 без хвостовой рекурсии заинтересовал две мощные корпорации (Мозилла и Самсунг). Наверное Немерле, с его великолепной поддержкой хвостовой рекурсии, может похвастаться не меньшими успехами, да?
Re[7]: Это прекрасно, я считаю
От: Курилка Россия http://kirya.narod.ru/
Дата: 14.04.13 10:05
Оценка:
Здравствуйте, kaa.python, Вы писали:

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


VD>>Думаешь многие будут ждать и надеяться на изменение точки зрения авторов? Основная масса просто забьет на язык.


KP>Язык версии 0.6 без хвостовой рекурсии заинтересовал две мощные корпорации (Мозилла и Самсунг). Наверное Немерле, с его великолепной поддержкой хвостовой рекурсии, может похвастаться не меньшими успехами, да?


Про мозиллу агрумент невалидный, ибо они его писать начали
Re[8]: Это прекрасно, я считаю
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 14.04.13 10:15
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Про мозиллу агрумент невалидный, ибо они его писать начали


Про Мозиллу аргумент более чем валиден, так как писать его начал Хор в 2006 году, а Мозилла присоеденилась в 2009.
Re[7]: Это прекрасно, я считаю
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.04.13 13:51
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Язык версии 0.6 без хвостовой рекурсии заинтересовал две мощные корпорации (Мозилла и Самсунг). Наверное Немерле, с его великолепной поддержкой хвостовой рекурсии, может похвастаться не меньшими успехами, да?


Языка пока нет. Интересовать он может разве что тех кому хочется во что-то поиграться. Не расскажешь о разработках Самсунга на этом языке?

В общем, можешь говорить все что угодно. Но, ФЯ без поддержки оптимизации хвостовой рекурсии — это нонсенс. Не более.

Аргументация авторов просто смехотворна. На сегодня почти все уважаемые компиляторы С++ поддерживают оптимизацию хвостовой рекурсии. А они то ИЯ. Писать циклы в них — норма.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Local variables may shadow earlier declarations
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.04.13 14:11
Оценка:
Здравствуйте, MTD, Вы писали:

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


MTD>>>Мне несколько раз компилятор давал по рукам за такое и каждый раз это был реальный баг. Мне сложно представить ради каких мнимых удобств нужна такая дыра в безопасности. Расскажешь?


VD>>Даю точное предсказание. Язык не поддерживал неизменяемых переменных и ты косячил с изменяемыми. Так?


MTD>В современных мейнстримовых языках (например, С++, Java) компилятор не дает накосячить таким образом


Это откровенное заблуждение. В С++ перекрытие переменных в норме вещей. Попробуй скоммпилировать что-то типа этого:
  int i = 42;
  {
    int i = 15;
    printf("i=%d\n", i);
  }


MTD> — это привычно для многих, поэтому мне не понятно ради каких удобств надо так конфьюзить разработчиков?


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

MTD>Ну вот кто нибудь в состоянии привести внятный пример?


Пример чего? Привести пример где того, что неизменяемые переменные приводят к каким-то реальным ошибкам я не могу. Уже 6 лет использую ФЯ в разработке и постоянно пользуюсь переопределением неизменяемых переменных. Ни разу не имел ни единой проблемы. Что я делаю не так?

Если тебе интересует пример того когда это удобно, то таких примеров масса. Например, нам нужно произвести ряд фильтраций некоторого списка. Чтобы не городить одну длинную строчку и меть возможность посмотреть в отладчике на промежуточные результаты я разбиваю одно выражение на несколько:
def result = source.Filter(некоторое длинное условие фильтрации);
def result = result.Filter(некоторое длинное условие фильтрации);
def result = result.Filter(некоторое длинное условие фильтрации);
def result = result.Filter(некоторое длинное условие фильтрации);
result

Это позволяет и код записать довольно красиво и в отладчике видеть промежуточные результаты.

А иногда промежуточными результатами надо еще что-то сделать.

При этом мы гарантированно не можем изменить переменную после объявления.

И, при этом, нам не нужно выдумывать совершенно синтетические имена (которые мешаются при рефакторинге и копипасте).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Local variables may shadow earlier declarations
От: MTD https://github.com/mtrempoltsev
Дата: 14.04.13 15:45
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Это откровенное заблуждение. В С++ перекрытие переменных в норме вещей. Попробуй скоммпилировать что-то типа этого:

VD>
VD>  int i = 42;
VD>  {
VD>    int i = 15;
VD>    printf("i=%d\n", i);
VD>  }
VD>


Здесь нет перекрытия — это две разных переменных в разных областях видимости.

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


Я бы не сказал, что сходна, насколько, например, она сходна у C++ и Python? Просто Rust, насколько я понял, претендует на замену С++, тогда не понятно зачем смущать разработчиков с опытом плюсов?

MTD>>Ну вот кто нибудь в состоянии привести внятный пример?


VD>Пример чего?


Пример того насколько удобно перекрытие объектов.

VD>Привести пример где того, что неизменяемые переменные приводят к каким-то реальным ошибкам я не могу.


Конечно, неизменяемые переменные сокращают количество ошибок.

VD>Если тебе интересует пример того когда это удобно, то таких примеров масса. Например, нам нужно произвести ряд фильтраций некоторого списка. Чтобы не городить одну длинную строчку и меть возможность посмотреть в отладчике на промежуточные результаты я разбиваю одно выражение на несколько:

VD>
VD>def result = source.Filter(некоторое длинное условие фильтрации);
VD>def result = result.Filter(некоторое длинное условие фильтрации);
VD>def result = result.Filter(некоторое длинное условие фильтрации);
VD>def result = result.Filter(некоторое длинное условие фильтрации);
VD>result
VD>

VD>Это позволяет и код записать довольно красиво и в отладчике видеть промежуточные результаты.

Плохой пример — копипаста, так лучше:

def result = source.filter(
        некоторое длинное условие фильтрации,
        некоторое длинное условие фильтрации,
        некоторое длинное условие фильтрации,
        некоторое длинное условие фильтрации);


VD>А иногда промежуточными результатами надо еще что-то сделать.


Слишком большая ответственность для одного метода, похоже надо рефакторить.

VD>И, при этом, нам не нужно выдумывать совершенно синтетические имена (которые мешаются при рефакторинге и копипасте).


В нормальном коде нет потребности в синтетических именах.
Re[8]: Это прекрасно, я считаю
От: MTD https://github.com/mtrempoltsev
Дата: 14.04.13 17:16
Оценка: +1 :)))
Здравствуйте, VladD2, Вы писали:

VD>С++ поддерживают оптимизацию хвостовой рекурсии. А они то ИЯ. Писать циклы в них — норма.


Отстал ты от жизни
Re[5]: Это прекрасно, я считаю
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.04.13 20:03
Оценка: :)
Здравствуйте, kaa.python, Вы писали:

KP>Это язык для людей с хорошим знанием C и С++.


Для людей хорошо знающих C и С++ есть новые версии C и С++. Rust на C и С++ ни разу не похож. Даже D куда больше на них похож.

KP>И им, в 9 из 10 случаем, на хвостовую рекурсию глубоко все равно.


Глупо переходить на язык поддерживающий ФП не планируя начать использовать ФП. А как только это случится, то отношение изменится.

KP>Ну а то что апологеты Nemerle


Ты думаешь, что задев оппонента ты станешь правее? Причем тут немерл? Я его называл? Немерл унаследовал данную оптимизацию у ML/OCaml. А до них были тонны языков включая Lisp. По твоей логике авторы этих языков — немерлисты?

KP>будут считать Rust полностью бесполезным, думаю не является очень уж большой проблемой.


Его будут считать ущербным. А отказываться от него будут на основании неадекватности авторов. Одно решение еще не приговор. Но 3-4 подобных решений и многие задумаются над тем можно ли доверять таким авторам.

И поверь на слово, те кто будет от него отказываться, почти наверняка, будут не немерлистами.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Local variables may shadow earlier declarations
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.04.13 00:35
Оценка:
Здравствуйте, MTD, Вы писали:

VD>>
VD>>  int i = 42;
VD>>  {
VD>>    int i = 15;
VD>>


MTD>Здесь нет перекрытия — это две разных переменных в разных областях видимости.


Ох-ох-ох. Так как категорично, столь неверное утверждение...

При перекрытии имен всегда создаются два разных символа (переменных в данном примере). И, возможно тебя это удивит, в языках позволяющих переопределять переменные локальные переменные без внутри одного блока (если оно там вообще есть), то для новой переменной всегда вводится новая область видимости (обычно располагающаяся со стейтемента/выражения следующего за объявлением и заканчивающаяся ближайшим блоком.

В C# перекрытие имен для локальных переменных запрещено. Это записано в стандарте.

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


MTD>Я бы не сказал, что сходна, насколько, например, она сходна у C++ и Python?


С точки зрения обсуждаемого вопроса, на 100%, так как современные версии C++ и Python поддерживают ФП в одинаковом объеме (поддерживают лямбды). Учитывая что без костылей Python TCO нет, то опыт от его использования нулевой.

Почитай вот ссылочки. На мысли должно наводить хотя бы то, что ссылок довольно много.

MTD>Просто Rust, насколько я понял, претендует на замену С++,


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

Как массовая замена C++ — это 100% провальная затея.

MTD>тогда не понятно зачем смущать разработчиков с опытом плюсов?


В Rust весь дизайн — это полнейшее смущение для разработчиков с опытом одних лишь плюсов. А вот как раз

MTD>Плохой пример — копипаста, так лучше:


MTD>
MTD>def result = source.filter(
MTD>        некоторое длинное условие фильтрации,
MTD>        некоторое длинное условие фильтрации,
MTD>        некоторое длинное условие фильтрации,
MTD>        некоторое длинное условие фильтрации);
MTD>


Ты читаешь не внимательно. Я же тебе сказал, что одна из проблем, что не видно промежуточных результатов.

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

MTD>Слишком большая ответственность для одного метода, похоже надо рефакторить.




Ладно. Я мог бы с тобой поспорить очень долго и развенчать каждый из твоих домыслов, но вижу что в этом нет смысла. Свое Имею Мнение Хрен Оспоришь ты имеешь. Опыта в обсуждаемом вопросе у тебя явно — ноль. Учиться на чужом опыте это не для тебя. Могу сказать только одно. Попробуй то что критикуешь, тогда сам все поймешь.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Local variables may shadow earlier declarations
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 15.04.13 03:32
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Ну вот кто нибудь в состоянии привести внятный пример?


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

ComputeKDE(points : array[double], x : double, window : double) : double
{
    def window = HoursToTicks(window);
    // ...
}
Ce n'est que pour vous dire ce que je vous dis.
Re[6]: Это прекрасно, я считаю
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 15.04.13 03:46
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ты думаешь, что задев оппонента ты станешь правее? Причем тут немерл? Я его называл? Немерл унаследовал данную оптимизацию у ML/OCaml. А до них были тонны языков включая Lisp. По твоей логике авторы этих языков — немерлисты?


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