Re[13]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 17:49
Оценка:
Здравствуйте, Курилка, Вы писали:

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


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


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


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

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

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

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


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


К>P.S. вроде смолтолк вообще почти не знаю, поэтому могу ошибаться , но если бы было как ты утверждаешь, то это грабли, причём кривее некуда, а тут просто лямбда и не более


Ага, грабли. Посмотри внимательно:

blockResult := aBlock value. "Здесь мы выполняем блок aBlock, пришедший нам в качестве параметра,
а результат выполнения записываем в переменную blockResult.
ВАЖНО: блок выполняется в том контекстве, где он было создан —
т.е. в нашем случае в контексте метода startingMethod.
При этом, если в блоке был выполнен оператор выхода из метода,
то из метода value мы _не_ возвращаемся
."


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

FDS>Тогда в чём ошибка в том примере? Можешь в той ветке объяснить подробнее (а то между двумя ветками неудобно)?


А там есть ошибка?
Re[14]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 05.09.06 17:54
Оценка:
Здравствуйте, FDSC, Вы писали:


FDS>Ага, грабли. Посмотри внимательно:


FDS>

FDS> blockResult := aBlock value. "Здесь мы выполняем блок aBlock, пришедший нам в качестве параметра,
FDS> а результат выполнения записываем в переменную blockResult.
FDS> ВАЖНО: блок выполняется в том контекстве, где он было создан —
FDS> т.е. в нашем случае в контексте метода startingMethod.
FDS> При этом, если в блоке был выполнен оператор выхода из метода,
FDS> то из метода value мы _не_ возвращаемся
."


Смысла выделенного я вообще не понимаю

FDS>Одним сторонником в наших рядах больше .


У тебя число бинарное деление всего?

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


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

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


FDS>>Тогда в чём ошибка в том примере? Можешь в той ветке объяснить подробнее (а то между двумя ветками неудобно)?


К>А там есть ошибка?


Да, я в другом посте уже тебе ответил. Тут закрываем.
Re[15]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 18:04
Оценка:
Здравствуйте, Курилка, Вы писали:

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



FDS>>Ага, грабли. Посмотри внимательно:


FDS>>

FDS>> blockResult := aBlock value. "Здесь мы выполняем блок aBlock, пришедший нам в качестве параметра,
FDS>> а результат выполнения записываем в переменную blockResult.
FDS>> ВАЖНО: блок выполняется в том контекстве, где он было создан —
FDS>> т.е. в нашем случае в контексте метода startingMethod.
FDS>> При этом, если в блоке был выполнен оператор выхода из метода,
FDS>> то из метода value мы _не_ возвращаемся
."


К>Смысла выделенного я вообще не понимаю


Чего ж тут непонятного? Вот загвоздка в том, как он возвращает результат в blockResult, если по return он выходит в другой метод?

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


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


Лямбд да, но только нормальных, а не таких
Re[9]: Насколько важен синтаксис языка?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 05.09.06 18:06
Оценка: 27 (2) +2 :)))
Здравствуйте, VladD2, Вы писали:

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

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

Да ничего нового, в общем. Для меня, во всяком случае. Зато кратко и честно, хоть и грубовато.

А ещё грамотно и без опечаток. Очень уж мне эта черта импонирует.

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

VD>Примеры амбиций мэйнстрима тоже хотелось бы поглядеть.

Специализация по странным критериям, ориентация на a priori низкоквалифицированного программиста. Выхолащивание понятия "программист" до "кодер". Достаточно?

Если не достаточно, то добавлю ещё перекорёживание тезиса о постоянном обучении. Извини, но прыжки по направлению C++ -> Java -> C# -> ASP и прочий web никак "учёбой" назвать нельзя. Это натаскивание на новые API в рамках одной идеи и не более того. А ещё и перекос в сторону "специалистов по API xxxxx", специалистов "по библиотеке X".

И главное, майнстрим не ставит своей целью борьбу со скукой. Наоборот, спящий мозг — самое то.

Ну и кому это понравится?
<< Под музыку: Gregorian — Heaven Can Wait (Interlude) >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[17]: Насколько важен синтаксис языка?
От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
Дата: 05.09.06 18:14
Оценка:
Здравствуйте, Eugene Beschastnov, Вы писали:

Похоже, всё-таки надо расписать еще чуть подробнее. Я проставил номера строк и добавил код с вызовом startingMethod (см. ниже). При вызове я считаю, что эти методы находятся в классе SomeClass.
startingMethod  "1.1. Здесь мы описываем создаваемый метод - указываем его имя и параметры. 
                 В данном случае имя метода - startingMethod, а параметров у него нету"

    | aBlock |    "1.2. Здесь мы указываем, что у нас в методе используется локальная переменная aBlock"

    aBlock := [^123]. "1.3. Здесь мы присваиваем переменной aBlock блок, который возвращает число 123. 
                       ВАЖНО: блок здесь создаётся, но не выполняется."

    self methodThatWorksWithBlock: aBlock. "1.4. Здесь мы вызываем у самого себя метод methodThatWorksWithBlock: с параметром aBlock"

    ^987   "1.5. Возвращаем значение 987"
methodThatWorksWithBlock: aBlock  "2.1. Здесь мы описываем создаваемый метод - указываем его имя и параметры. 
                                   В данном случае имя метода - methodThatWorksWithBlock: , и у метода есть один параметр - aBlock"

    | blockResult |  "2.2. Здесь мы указываем, что у нас в методе используется локальная переменная blockResult"

    blockResult := aBlock value.  "2.3. Здесь мы выполняем блок aBlock, пришедший нам в качестве параметра, 
                                   а результат выполнения записываем в переменную blockResult. 
                                   ВАЖНО: блок выполняется в том контекстве, где он было создан - 
                                   т.е. в нашем случае в контексте метода startingMethod. 
                                   При этом, если в блоке был выполнен оператор выхода из метода, 
                                   то из метода value мы _не_ возвращаемся."

    ^blockResult  "2.4. Возвращаем blockResult"
myObject := SomeClass new. "3.1. Создаём объект класса SomeClass и записываем его в переменную myObject."

myResult := myObject startingMethod. "3.2. Вызываем метод startingMethod у объекта myObject."

myResult printSomewhere. "3.3. Выводим результат где-то."


Выполнение будет происходит в следующей последовательности:
  1. 3.1
  2. 3.2 (вызов метода startingMethod)
  3. 1.3 (присваивание переменной aBlock значения, равного "объект 'блок' с содержимым [^123]")
  4. 1.4 (вызов метода "methodThatWorksWithBlock:")
  5. 2.3 (вызов метода "value" у объекта aBlock)
  6. 1.3 (выполнение блока и выход из метода startingMethod с возвращением значения "123")
  7. 3.2 (присваивание переменной "myResult" значения "123")
  8. 3.3


Ну, сейчас вроде бы никаких непониманий точно не должно быть
--
Бесчастнов Евгений
Кстати
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 05.09.06 18:16
Оценка:
Здравствуйте, VladD2,

Ты не ответил на заданный вопрос:

VD>>>...относиться с уважением и к другим. Они ведь тоже что-то сделали?!
ГВ>>Как ты думаешь, почему считается некорректным приём дискуссии, называемый "апелляцией к опыту"? Никогда не задумывался?
VD>Задумывался. Когда ты к нему прибегал.

Ну так почему же этот приём считается некорректным?

<< Под музыку: Кельтская гитара — Леди туманной горы >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[15]: Насколько важен синтаксис языка?
От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
Дата: 05.09.06 18:17
Оценка:
Здравствуйте, Курилка, Вы писали:

FDS>>

FDS>> blockResult := aBlock value. "Здесь мы выполняем блок aBlock, пришедший нам в качестве параметра,
FDS>> а результат выполнения записываем в переменную blockResult.
FDS>> ВАЖНО: блок выполняется в том контекстве, где он было создан —
FDS>> т.е. в нашем случае в контексте метода startingMethod.
FDS>> При этом, если в блоке был выполнен оператор выхода из метода,
FDS>> то из метода value мы _не_ возвращаемся
."


К>Смысла выделенного я вообще не понимаю


http://www.rsdn.ru/Forum/Message.aspx?mid=2094926&amp;only=1
Автор: Eugene Beschastnov
Дата: 05.09.06
--
Бесчастнов Евгений
Re[8]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 18:17
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Судя по стенаниям, ты ждал женскую грудь, а получил коровье вымя.


Да, что-то вроде того.

ANS>ЗЫ. И комплит-ворд в Дольфине есть,


Появился в 7-ой версии и насколько я понимаю не полноценный (работает только для переменных явно инициализированных объектами).

ANS> и броузер кода удобный,


Дык тут никаких проблем нет.

ANS> и рефакторинг работает,


А вот это меня все время интересовало. Я сам сейчас занимаюсь похожими вещами и прекрасно понимаю как это все работает на статически типизированном языке. Но вот для днамически типизированного я 100%-ых алгоритмов не вижу. Где-нибудь есть описание того на каких принципах рабоатет рефакторинг в Смолтоке? И вообще, где найти описание фичь рефакторинга?

Об этом было бы очень интересно услышать.

ANS> и на ST там всё написано кроме ВМ и виндовых контролов.


Спай четко показывает, что все окна написаны на MFC или еще чем-то там (давно дело было). То есть сама среда написана на С++ или с нехилым его применением.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Насколько важен синтаксис языка?
От: trophim Россия  
Дата: 05.09.06 18:21
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Ага, вопрос: что мешало авторам сделать язык без этой особенности?


Чтоб было не как у всех. А то как еще отличиться?
З.Ы. Нам в университете както преподаватель сказал: пролог лучше не учите — голову сломаете.
[EOF]
Let it be! — Давайте есть пчелу!
Re[6]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 18:23
Оценка:
Здравствуйте, trophim, Вы писали:

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


FDS>>Ага, вопрос: что мешало авторам сделать язык без этой особенности?


T>Чтоб было не как у всех. А то как еще отличиться?


А я думал, просто по неопытности
Re[13]: Насколько важен синтаксис языка?
От: WolfHound  
Дата: 05.09.06 18:28
Оценка: +1
Здравствуйте, Eugene Beschastnov, Вы писали:

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

EB>Ну блин %-). А ТЫ как относишься к exception-ам?
А как исключения относятся к выходу черт знает куда?
Да и что получится если блоки кода сложить в коллекцию, потом выдти из функции где были созданны эти блоки, и после этого повызывать эти блоки?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[18]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 18:30
Оценка:
Здравствуйте, Eugene Beschastnov, Вы писали:


EB> blockResult := aBlock value. "2.3. Здесь мы выполняем блок aBlock, пришедший нам в качестве параметра,

EB> а результат выполнения записываем в переменную blockResult.


EB>Ну, сейчас вроде бы никаких непониманий точно не должно быть


Остался вопрос, как написать aBlock так, что бы blockResult получил значение
Re[19]: Насколько важен синтаксис языка?
От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
Дата: 05.09.06 18:31
Оценка:
Здравствуйте, FDSC, Вы писали:

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



EB>> blockResult := aBlock value. "2.3. Здесь мы выполняем блок aBlock, пришедший нам в качестве параметра,

EB>> а результат выполнения записываем в переменную blockResult.


EB>>Ну, сейчас вроде бы никаких непониманий точно не должно быть


FDS>Остался вопрос, как написать aBlock так, что бы blockResult получил значение


aBlock := [123].

Т.е. просто без выхода из метода.
--
Бесчастнов Евгений
Re[18]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 05.09.06 18:33
Оценка: +3
Здравствуйте, Eugene Beschastnov, Вы писали:


EB>
  • 1.3 (выполнение блока и выход из метода startingMethod с возвращением значения "123")

    Вот и получаем грабли
    Значит заблуждался я про ST и не лямбды это вовсе, а вообще непонятная конструкция из которой фиг знает чего можно натворить.
    К примеру, что будет если блок вернуть из метода? А в блоке будет возврат из этого метода (который уже завершился)?
  • Re[20]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 05.09.06 18:42
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

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


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



    EB>>> blockResult := aBlock value. "2.3. Здесь мы выполняем блок aBlock, пришедший нам в качестве параметра,

    EB>>> а результат выполнения записываем в переменную blockResult.


    EB>>>Ну, сейчас вроде бы никаких непониманий точно не должно быть


    FDS>>Остался вопрос, как написать aBlock так, что бы blockResult получил значение


    EB>
    EB>aBlock := [123].
    EB>

    EB>Т.е. просто без выхода из метода.

    Это я догадался. А если бы мне нужно было написать настоящую функцию?
    Re[19]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 05.09.06 18:44
    Оценка:
    Здравствуйте, Курилка, Вы писали:

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



    EB>>
  • 1.3 (выполнение блока и выход из метода startingMethod с возвращением значения "123")

    К>Вот и получаем грабли

    К>Значит заблуждался я про ST и не лямбды это вовсе, а вообще непонятная конструкция из которой фиг знает чего можно натворить.
    К>К примеру, что будет если блок вернуть из метода? А в блоке будет возврат из этого метода (который уже завершился)?

    Я уже про это думал. Но наверное это вообще синтаксически невозможно. К тому же, в C++, например, можно вернуть указатель на локальную переменную, но ведь никто этого не делает. Тут проблема в более сложных конструкциях будет.
  • Re[14]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 05.09.06 18:46
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

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


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

    EB>>Ну блин %-). А ТЫ как относишься к exception-ам?
    WH>А как исключения относятся к выходу черт знает куда?
    WH>Да и что получится если блоки кода сложить в коллекцию, потом выдти из функции где были созданны эти блоки, и после этого повызывать эти блоки?


    А что получится, если даже невыходя из функции вызвать эти блоки?
    Re: Насколько важен синтаксис языка?
    От: minorlogic Украина  
    Дата: 05.09.06 19:05
    Оценка: +1
    Здравствуйте, Курилка, Вы писали:

    К>В своей заметке Райан Бэйкер делает интересное, хотя очень спорное замечание:

    К>В лиспе код есть данные и данные есть код, но в итоге в лиспе нет синтаксиса, только скобки, тогда как в техже сиподобных языках есть скобки для вызова функции, фигурные — для блоков кода, квадратные — для массивов. Всё это и многое другое делает код более легко делимым на разные смысловые "куски".
    К>Так вот — хотелось бы рассмотреть вопрос: насколько синтаксис языка определяет его удобство для использования?
    К>P.S. Данный вопрос выглядит интересным, к примеру в свете соседнего обсуждения Смолтолка с его тоже не очень "общепринятым" синтаксисом.
    К>P.P.S. С данным мнением лично я не совсем согласен и меня не пугают горы скобок, да и синтаксис в лиспе присутствует (см. комментарии к заметке), "просто вы не умеете их готовить"

    Смнтаксис важен настолько же насколько важен человеческий язык для общения людей , млм математическая нотация которой общаются математики. Насколько было бы удобно изучать и использовать другую нотацию , например сложение записывалось бы символом "=" а вычитание буквой "т" ?

    Известно , что счет удобнее вести в 12 рмчной системе исчесления , но пользуемся мы 10 ричной ..
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Ищу работу, 3D, SLAM, computer graphics/vision.
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.