Re[9]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 17:11
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Я C++ изучал после Dephi, assmbler, и VBScript (для IE). Наверное, я просто менее поворотливый


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


Когда я учился программироватиь Dephi и VBScript просто не было. Борланд в моем окружении вообще не был популярен, так что выбора практически небыло. QuickBasic или С. Напаровшь на первое ограничение Васика я сразу начал учить С. От PL/1 и фортран меня бог уберег.

FDS>Вся проблема в том, что меня раздражает то, как эти более мощные возможности представляются. Меня, например, C++ раздражал пока я на нём не написал как минимум 4500 строк. Думаю, это не 10 минут работы . (а вот assembler меня никогда не раздражал, если не считать разницы в мнемонических обозначениях команд в intel 8086 и, напирмер, Intel 8080). Проще говоря, меня раздражает, когда то, что у меня в мозгах сложно переносить в то, что в компьютере, даже если при этом на это нужно меньше строк кода.


Nemerle как раз и позволяет людям со скажем так С-прошлым (т.е. C#-, Java-, C++-, C-программистам) не ломать сознание сразу, а то вообще не ломать сознание. Ты можешь начинать писаить на нем как на чуть чуть улучшеном C#, а в последствии изучать одну новую возможность за другой.

FDS>Возможно, я просто слишком поверхностно ознакомился с возможностями Nemerle, но они паказались мне просто небезопасными.


Не возможно, а 100% так и есть. Nemerle самый безопасный из инмперативных языков которые я только видел. Безопасность одно из ключевых качеств дизайна. По крайней мере C#, Java и Ruby ему точно сольют по тем или иным параметрам. Есть конечно макросы, но их можно не создавать или контролировать чтобы люди создающие их были адекватно компетентными.

FDS>Возможно, речь идёт о том, что при переносе алгоритма из неформального представления в формальное требуется некоторый вспомогательный алгоритм? (имеется ввиду, что формальные и неформальные представления слишком различны и требуют дополнительного слоя согласования)


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

FDS>А вот меня он ломает и очень сильно. Так что я прав


А что конкретно ломает?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 17:11
Оценка: :)))
Здравствуйте, Eugene Beschastnov, Вы писали:

EB>Влад, ты меня просто умиляешь Я уже далеко не первый раз, глядя на твои посты, вспоминаю "Собачье сердце", а конкретно момент с обсуждением переписки Энгельса и Каутского.


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

EB>По пунктам: "^0" в Smalltalk ровно настолько же близок к goto, как "return 0" в C# — потому что это в точности то же самое.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 17:11
Оценка: +2
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Есть. Ты забываешь про лес и выделяешь деревья. Win2K очень много дельного говорит (как и камрад Kolhoz).


Цитаты, плиз, в студию. Что же он такого сказал, что не было сказано до него в приличной форме?

ГВ> Не знаю, зачем это ему нужно. Может быть, его тоже достал "майнстрим" со своими амбициями?


Примеры амбиций мэйнстрима тоже хотелось бы поглядеть.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 17:11
Оценка: +1
Здравствуйте, Programmierer AG, Вы писали:

PA>А насчет отсутствия познавательного — это или мегазнания, или нежелание

PA>видеть очевидное. Вот парочка примеров:
PA>http://rsdn.ru/Forum/Message.aspx?mid=1515192&amp;only=1
Автор: reductor
Дата: 01.12.05

PA>http://rsdn.ru/Forum/Message.aspx?mid=1529433&amp;only=1
Автор: reductor
Дата: 09.12.05


ОК. Одно из этих соощений (первое) действительно имеет интерес. Теперь сравним с количеством дерьма в остльных постах.
На этом форуме есть очень много народа писавшего много интересных сообщений и статей (уж точно не менее интереснее этих). При этом ни один из этих людей не позволяет себе вот так беззастенчиво и грубо осорблять не просто окружающих, а просто таки заниматься шовинизмом.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 17:11
Оценка: +2
Здравствуйте, Kisloid, Вы писали:

K>Кстати говоря да, я даже сегодня прочитал все сообщения Win2K'ея. Если фильтровать все его поливания дерьмом остальных, то он очень толковые вещи говорит, местами.


О чем и речь. Вот только толковые вщеи тут много кто говорит. Но при этом не позволяет себе вот этакое отношение к людям.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 17:11
Оценка: 1 (1) +2
Здравствуйте, Курилка, Вы писали:

К>Откуда ты взял множетство да ещё и неочевидных связей? Конкретно что тебя испугало?


Связи тут не причем, но в общем он прав, по-моему. Этот код не структурен. Переход управления из подвыражения черти куда (к концу функции) — это не структурный переход. Это все равно что допустить return внутри выражений С:
int i = x ? 2 : return -1;

Внутри объемного кода эото неминуемо приведет к неочевидному поведению.

В функциональных языках return то не приветствуется, а тут вольный выход из любой точки выражения. По-моему, то чистой воды грабли.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 17:11
Оценка: 1 (1) +2
Здравствуйте, Andrei N.Sobchuck, Вы писали:

FDS>>В таком случае, VladD2 полностью прав, когда говорит, что это по типу goto. Причём это небезопасное использование goto.


ANS>Ты пример приведи, того что тебя пугает. И станет сразу видно правильно ты понимаеш или нет


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

Тонны народа думали над концепциями структурного программирования только для того чтобы ради небольшоко сокращени кода делались вот такие выкрутасы.

Я тут полностью согласен с FDSC. Код:
DataTable msgTable = msgs.Tables["message"]; if (msgTable == null)  return 0;

А точнее:
DataTable msgTable = msgs.Tables["message"];
if (msgTable == null)
  return 0;

Выгляди более понятным и предсказуемым. Если отбросить маньиакальное стремление засунуть код в одну строчку, то он полностью равнозначен.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 17:11
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Чем же ваш пример так хуже. Ну, сделайте другой метод, что бы было


FDS>
FDS>DataTable msgTable = msgs.Tables["message"]; if (msgTable.Absent)  return 0;
FDS>


Только немного не так:
DataTable msgTable = msgs.Tables["message"]; if (msgTable == null)  return 0;

Иначе не ясно что же такое msgTable.

Но в целом согласен.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 05.09.06 17:12
Оценка:
Здравствуйте, FDSC, Вы писали:

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


...

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


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


А можешь пояснить что есть "передать возврат в исполняемом блоке"?
Блок по сути есть функция, поэтому она и должна что-то возвращать.
И совсем не понятно, что же ты хочешь перехватить? Вызов этой по сути анонимной функции? Если код, который её вызывает написал ты?
Re[3]: Насколько важен синтаксис языка?
От: trophim Россия  
Дата: 05.09.06 17:15
Оценка:
Здравствуйте, Quintanar, Вы писали:

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


Q>>Я на выходных немного поковырял Смоллток и пришёл к выводу — всё таки нужен ДРУГОЙ язык. Ибо мозги у меня нормальные и когда я читаю "если условие, то сделать то-то", это более понимаемо, чем "условие :ЕслиДа делать то-то".


Q>Т.е. вы считаете любителей Smalltalk ненормальными? Как вы оценили собственную нормальность?


Да фактически каждый новичок отмечает эту особенность синтаксиса смоллтока. Просто некоторые привыкают и не замечают некоторых неудобств (кажущихся?), а некоторым это кажется неуклюжим и они не могут это принять и привыкнуть.
Что-то в этом духе.
[EOF]
Let it be! — Давайте есть пчелу!
Re[18]: Насколько важен синтаксис языка?
От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
Дата: 05.09.06 17:27
Оценка:
Здравствуйте, FDSC, Вы писали:

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

Классно!
(в преподаватели, что ли, податься? )

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

Ну, это отчасти верно. Но, если учесть, что
1) это надо учитывать только при явном вызове методов "value", "value:", "value:value:" и т.д. (и нигде больше)
и 2) выход из блока во время его исполнения — штатная и достаточно часто использующаяся функция (соответственно, не требует особых усилий по запоминанию, в отличии от случая, если бы это было редкой нештатной особенностью)
— то всё не так уж страшно.
--
Бесчастнов Евгений
Re[10]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 17:27
Оценка:
Здравствуйте, VladD2, Вы писали:

FDS>>Возможно, я просто слишком поверхностно ознакомился с возможностями Nemerle, но они паказались мне просто небезопасными.


VD>Не возможно, а 100% так и есть. Nemerle самый безопасный из инмперативных языков которые я только видел. Безопасность одно из ключевых качеств дизайна. По крайней мере C#, Java и Ruby ему точно сольют по тем или иным параметрам. Есть конечно макросы, но их можно не создавать или контролировать чтобы люди создающие их были адекватно компетентными.


Я макросы и имел ввиду. Если честно, кроме макросов меня в Nemerle ничего не привлекает. Собственно, всё что я говорил — это про макросы. Сам язык мне почти нравится — он действительно не сильно отличается. По моему они вообще не позволяют адекватно переносить "макросовые" мысли на язык макросов

FDS>>Возможно, речь идёт о том, что при переносе алгоритма из неформального представления в формальное требуется некоторый вспомогательный алгоритм? (имеется ввиду, что формальные и неформальные представления слишком различны и требуют дополнительного слоя согласования)


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


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

FDS>>А вот меня он ломает и очень сильно. Так что я прав


VD>А что конкретно ломает?


Макросы (полностью) и то, что нужно объявлять все переменные как переменные
Re[25]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 17:29
Оценка:
Здравствуйте, Курилка, Вы писали:

FDS>>Ну, я хотел сказать, что если мы объявили делегат, и return приведёт к выходу не из этой функции, а из какой-то другой, то мы можем сделать так, что функция получит выход сама на себя. Ну или другие последствия, как при передачи простой метки в функцию для скачка.


К>Где ты метку взял? Тебе везде goto мерещится?

К>Блоки смолтолковские и рубивские — это лямбды по сути, никаким образом не метки, и лямбды возвращают управление в том месте, где они были вызваны.

То, что это не goto мне объяснили в соседней ветке. А вот возвращают управление они, судя по объяснением, совершенно не в том месте, где были вызваны, а в том месте, где были описаны. См. описание здесь
Автор: Eugene Beschastnov
Дата: 05.09.06
Re[19]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 17:30
Оценка:
Здравствуйте, Курилка, Вы писали:

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


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


К>...


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


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


К>А можешь пояснить что есть "передать возврат в исполняемом блоке"?

К>Блок по сути есть функция, поэтому она и должна что-то возвращать.
К>И совсем не понятно, что же ты хочешь перехватить? Вызов этой по сути анонимной функции? Если код, который её вызывает написал ты?

А если её код написал не я. Просто блок, переданный библиотечной функции как параметр, и возвращающий управление той функции, где он был описан.
Re[12]: Насколько важен синтаксис языка?
От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
Дата: 05.09.06 17:32
Оценка: :)
Здравствуйте, VladD2, Вы писали:

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

Ну блин %-). А ТЫ как относишься к exception-ам?
--
Бесчастнов Евгений
Re[12]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 05.09.06 17:36
Оценка:
Здравствуйте, VladD2, Вы писали:

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


К>>Откуда ты взял множетство да ещё и неочевидных связей? Конкретно что тебя испугало?


VD>Связи тут не причем, но в общем он прав, по-моему. Этот код не структурен. Переход управления из подвыражения черти куда (к концу функции) — это не структурный переход. Это все равно что допустить return внутри выражений С:

VD>
VD>int i = x ? 2 : return -1;
VD>

VD>Внутри объемного кода эото неминуемо приведет к неочевидному поведению.

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


Опять 25, вот здесь
Автор: Eugene Beschastnov
Дата: 05.09.06
вроде описано, что возврат-то идёт из блока, который содержится в выражении, а не из метода, в котором содержится выражение, разницу ощущаешь?

P.S. вроде смолтолк вообще почти не знаю, поэтому могу ошибаться , но если бы было как ты утверждаешь, то это грабли, причём кривее некуда, а тут просто лямбда и не более
Re[4]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 17:37
Оценка:
Здравствуйте, trophim, Вы писали:

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


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


Q>>>Я на выходных немного поковырял Смоллток и пришёл к выводу — всё таки нужен ДРУГОЙ язык. Ибо мозги у меня нормальные и когда я читаю "если условие, то сделать то-то", это более понимаемо, чем "условие :ЕслиДа делать то-то".


Q>>Т.е. вы считаете любителей Smalltalk ненормальными? Как вы оценили собственную нормальность?


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

T>Что-то в этом духе.

Ага, вопрос: что мешало авторам сделать язык без этой особенности?
Re[19]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 17:40
Оценка: +1 :)
Здравствуйте, Eugene Beschastnov, Вы писали:

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


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

EB>Классно!
EB>(в преподаватели, что ли, податься? )

А что, почему бы и нет? (я вот преподаю, садистические тенденции удовлетворяю )

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

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

Вот мне это как раз очень страшно: "выход из блока во время его исполнения — штатная и достаточно часто использующаяся функция". С моей точки зрения — это скорее удобный хакерский приём. Он очень сильно усложняет верификацию алгоритма, просто сердцем чувствую, даже нехорошо как-то стало.
Re[26]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 05.09.06 17:43
Оценка:
Здравствуйте, FDSC, Вы писали:

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


FDS>>>Ну, я хотел сказать, что если мы объявили делегат, и return приведёт к выходу не из этой функции, а из какой-то другой, то мы можем сделать так, что функция получит выход сама на себя. Ну или другие последствия, как при передачи простой метки в функцию для скачка.


К>>Где ты метку взял? Тебе везде goto мерещится?

К>>Блоки смолтолковские и рубивские — это лямбды по сути, никаким образом не метки, и лямбды возвращают управление в том месте, где они были вызваны.

FDS>То, что это не goto мне объяснили в соседней ветке. А вот возвращают управление они, судя по объяснением, совершенно не в том месте, где были вызваны, а в том месте, где были описаны. См. описание здесь
Автор: Eugene Beschastnov
Дата: 05.09.06


Как раз в том где вызваны! Ты вызываешь блок во так:


blockResult := aBlock value.


внутри этого aBlock у тебя и происходит возврат значения, которе в переменную blockResult попадает
Re[27]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 17:45
Оценка:
Здравствуйте, Курилка, Вы писали:

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


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


FDS>>>>Ну, я хотел сказать, что если мы объявили делегат, и return приведёт к выходу не из этой функции, а из какой-то другой, то мы можем сделать так, что функция получит выход сама на себя. Ну или другие последствия, как при передачи простой метки в функцию для скачка.


К>>>Где ты метку взял? Тебе везде goto мерещится?

К>>>Блоки смолтолковские и рубивские — это лямбды по сути, никаким образом не метки, и лямбды возвращают управление в том месте, где они были вызваны.

FDS>>То, что это не goto мне объяснили в соседней ветке. А вот возвращают управление они, судя по объяснением, совершенно не в том месте, где были вызваны, а в том месте, где были описаны. См. описание здесь
Автор: Eugene Beschastnov
Дата: 05.09.06


К>Как раз в том где вызваны! Ты вызываешь блок во так:



К>
К>blockResult := aBlock value.
К>


К>внутри этого aBlock у тебя и происходит возврат значения, которе в переменную blockResult попадает


Тогда в чём ошибка в том примере? Можешь в той ветке объяснить подробнее (а то между двумя ветками неудобно)?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.