Re[19]: Насколько важен синтаксис языка?
От: Beam Россия  
Дата: 07.09.06 11:01
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>
LCR>includes: object
LCR>    self do: [:element | element = object ifTrue: [^ true]].
LCR>    ^ false
LCR>


Посмотрите, код на Java. Он аналогичен коду выше. Ну разве Вы написали бы его по-другому?

boolean includes(Object goodElement)
{
    Iterator it = this.iterator();
    while (it.hasNext())
    {
        Object element = it.next();
                if (element == goodElement) return true;
    }
    return false;
}


Почему в этом коде нет неструктурированной передачи управления, а в Smalltalk есть?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Best regards, Буравчик
Re[12]: Насколько важен синтаксис языка?
От: _rasta  
Дата: 07.09.06 11:01
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Можно я ограничусь двумя примерами из той коллекции ссылок?


+ от меня:

MY>>Понятно, на этом форуме появился еще один непризнанный гений Мы, жалкие ламеры, нервно курим в сторонке.
W>Что не мастер ни фига ты мне сдаётся, Йода.

W>>> И ведь ни TeX, ни Metafont не помянули. DEC VMS как будто и не существовало...
MY>>Аналогично
W>Вот зачем, зачем так явно расписываться в ламеризме?!?


имхо тоже хороший ответ. емкий и лаконичный

зы. вот интересно. если модераторам грамотно объяснить что они иногда не правы, должны ли они (модераторы), сами себя забанить?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[12]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.09.06 11:07
Оценка: :))
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Просто человек молод, и у человека преобладает бинарный взгляд на мир. Ничего страшного, это обычно проходит с возрастом.


Да, все совершенно нормально. Пусть подрастает в бане.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[24]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 07.09.06 11:14
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Да? А вот микрософт-то не знает...


при всех его недостатках, реально достойных конкурентов пока не видно

К>Это, конечно, ирония, но про то, как кормить семью на голом энтузиазме ты не прокомментировал


кроме энтузиазма надо еще иметь голову на плечах.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[16]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 07.09.06 11:15
Оценка:
Здравствуйте, VladD2, Вы писали:

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


"Нич-чё не понимаю" (С) следствие ведут Колобки

VD>Обработчики и защищенные блоки всегда расположены иерархически.


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

Что касается исключений. И так, ты зарегистрирова некий лисенер. При вызове лисенера он бросил NPE. Превратился ли в этот момент Java/C# в небезопасный неструктурный язык?
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[13]: Насколько важен синтаксис языка?
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 07.09.06 11:32
Оценка:
VladD2,

LCR>>Просто человек молод, и у человека преобладает бинарный взгляд на мир. Ничего страшного, это обычно проходит с возрастом.


VD>Да, все совершенно нормально. Пусть подрастает в бане.


Я не об этом, а о том, что фразы вполне терпимы, особенно если учитывать контекст и (предполагаемый) возраст.

Ладно, неважно.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[13]: Насколько важен синтаксис языка?
От: Master Yoda Великобритания  
Дата: 07.09.06 11:33
Оценка: +1
Здравствуйте, _rasta, Вы писали:

_>имхо тоже хороший ответ. емкий и лаконичный


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

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

Какой бы то ни было аргументации в посте, цитаты из которого вы привели, также нет. Видимо автору удобнее просто оперировать названиями инструментов, нежели как-то обосновывать свою точку зрения.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re[9]: Насколько важен синтаксис языка?
От: vdimas Россия  
Дата: 07.09.06 11:38
Оценка:
Здравствуйте, Дарней, Вы писали:

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


AutoCAD когда-то был весьма скромной программой. Им бы никто не дал хорошую расширяемую скрипт-машину по вменяемой цене на момент выхода, но зато написать интерпретатор Lisp-а способен даже студент-старшекурсник. (Примечание, VBA-среда появилась там уже в версиях, близких к 10-й, когда она стала вполне доступной по цене и наконец-то не такой уж глюкавой. Да и еще железки возмужали настолько, что стали адекватно переносить запуск среды редактирования VBA-макросов)

Д>Поскольку я не вижу волны таких стартапов, построенных на "элитарных языках", я делаю простой вывод — все их преимущества высосаны из пальца.


Не знаю, мне регулярно попадались на глаза проги, где в качестве скрипт-машины использовали Лисп. Может ты просто невнимательно смотрел? Не поленись, выйди на любой сайт, посвященный Лиспу, там полно ссылок на готовые продукты и прочие success story.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Насколько важен синтаксис языка?
От: vdimas Россия  
Дата: 07.09.06 11:38
Оценка: -1
Здравствуйте, Дарней, Вы писали:

Д>... все их преимущества высосаны из пальца, или с лихвой перекрываются недостатками.


Преимущество в легкости освоения и дешевизне интеграции.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[14]: Насколько важен синтаксис языка?
От: Mirrorer  
Дата: 07.09.06 11:44
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Регексы нельзя выделить в отдельную сущьность. А детали реализации некоторых библиотек нас ведь не трогают. Так что в реализациях они конечно есть, но напрямую их не используют. Макросы же другое дело. Их как раз можно использовать напрямую.

Знаю людей которые без знания регексов их использовали. Нужен регекс для валидации мыла ? Нет вопросов. google: regex email validation, ^C ^V. А чего, работает же ?
Ну и в таком же духе. Такое использование я считаю "black box". Может быть конечно оно не так широко распространено, как мне кажется

VD>Создали бы библиотеку стандартных регексов и пользовались бы ими по имени.

см. выше.

VD>Тебе нужно глубокое понимание устройства компилятора для использования конструкции if/else?

Смотря для какого использования Если необходимо в чужом .exe поменять
JZ на JNZ, то пожалуй надо. Но в общем случае, при разработке, конечно нет.

VD>Использовать его значит применять в прграмме. А вот писать свои макросы — это другое дело.

Да, при такой постановке вопроса я с тобой согласен.

VD>

Нужно ли знать алгоритм для его успешного применения? Ответ одназначный — нет, не нужно.
VD>Полезно ли знать алгоритм для его успешного применения. Ответ так же однозначен — да, несомненно.


В принципе, согласен, но, думаю, можно уточнить.

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

... << RSDN@Home 1.1.4 Pink Floyd — Time >>
Re[11]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 07.09.06 11:46
Оценка: -5
Здравствуйте, vdimas, Вы писали:

V>Преимущество в легкости освоения и дешевизне интеграции.


у кого преимущество? перед кем? интеграции с чем?
высказался, как в лужу пукнул
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[25]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.09.06 11:47
Оценка:
Здравствуйте, Beam, Вы писали:

B>Конечно им надо следовать. И я не вижу нарушения правил структурного программирования при возврате из блока кода (как реализовано это в Smalltalk).


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

VD>>Не правда. Бьюсь об заклад, что на том же Nemerle напишу код который в среднем будет превосходить по выразительности, краткости и понятности Смолтоковский. Об производительности и говорить не приходится.


B>Абсолютно согласен, что в Nemerle можно написать более красивый код, т.к. Nemerle поддерживает макросы, а Smalltalk нет.


Даже без написания собстенных маросов.

B> Как следствие расширяемость Smalltalk ниже, чем у Nemerle или Lisp, но намного выше, чем у Java и C#.


Расширяемость тут не причем. А спорить с тем, что она у Java и C# праткически на нуле я не буду .

B>О производительности ничего не могу сказать, т.к. не знаю как работает Nemerle.


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

VD>>Возможно я не понят. Я не против блоков кода, а-ка лямбды или анонимные методы. Идея передовать куски кода в другие фунции мне очень нравится и я ее сам постоянно исползую (правда не в Смолток, а в Немерле и C#). Мне не нравится идея неструктурированной передачи управления.


B>Представьте макрос if (cond) then {trueBlock} else {falseBlock}

B>Вы передаете блоки в качестве параметров макроса. Если Вы напишите return в этих блоках, будет это являться неструктурируемой передачей управления?

Несомненно, нет, не будет! Но! Я не могу передать if в другую функцию и return не приведет к выходу из другой процедуры где бы код не был бы обявлен. То есть для пользователя мароса if возрват будет происходить всегда предсказуемо структруно.

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


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

Кстати, по этому лямбды тяжело корректно реализовать в языках не поддрживающих сборку мусора. Ведь время жизни лямбды неструктрно. Она будет жить пока на нее есть ссылки.

B> Это то же самое, что написать return не в конце метода, а например в if.

B> И происходит передача управления в соответствии с принципами структурного программирования. Такая возможность используется в Smalltalk также часто как и в других языках.

Да, в твоих примерах это так, и я уверен, что авторы Смолтока именно на такое применение и рассчитывали. Но вот к глубокому сожалению есть варианты когда применение "крышлки" приводитк к проблемам. И это уже косяк в дизайне языка. Именно по этому подобных вещей нет в современных ЯП. Вместо этого в них есть куда более сложные фишки вроде континюэшонов и старые добрые лямбды знакомые еще по Лиспу.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[25]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.09.06 11:47
Оценка:
Здравствуйте, Beam, Вы писали:

VD>>Ты серьзно считаешь, что применение таких техник оправдано элюзорным уменьшением объема кода?


B>Ну нету таких проблем. Нету!


Ага. А в С++ нет проблем goto, обращения к неинициализированным переменным и т.п. Достаточно послушать фанатов С++, чтобы убедиться что те у кого такие проблемы встречаются — это просто криворукие ламеры.

Кстати, на вопрос ты не ответил.

B>Я прошу Вас привести пример кода, который на Ваш взгляд мог бы передать управления "в никуда" (псевдокод).


Код был приведен в самом начале обсуждения. Вариации на тему: невозврат метода и исключения при вызове блока из "неверного" контекста о которых тут уже тоже говрили не мало.

B>Я со своей стороны попытаюсь продемонстрировать работу этого кода в Smalltalk. Может действительно найдем подводные камни.


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

B>Здравствуйте, Lazy Cjow Rhrr, Вы писали:


LCR>>
LCR>>includes: object
LCR>>    self do: [:element | element = object ifTrue: [^ true]].
LCR>>    ^ false
LCR>>


B>Посмотрите, код на Java. Он аналогичен коду выше. Ну разве Вы написали бы его по-другому?


B>
B>boolean includes(Object goodElement)
B>{
B>    Iterator it = this.iterator();
B>    while (it.hasNext())
B>    {
B>        Object element = it.next();
B>                if (element == goodElement) return true;
B>    }
B>    return false;
B>}
B>


B>Почему в этом коде нет неструктурированной передачи управления, а в Smalltalk есть?


Потому что вэтом коде нет блоков кода, ака лямбд.

Кстати, вот вариант на Немерле:
/**
 * List membership test, using the `Equals' method to compare objects.
 */
public Member ['a] (lst : list ['a], obj : 'a) : bool
{
    match (lst)
    {
        | head :: tail  => head.Equals(obj) || Member(tail, obj)
        | [] => false
    }
}

Нет даже return-а. И суть ясна как божий день. Если список пуст, то элемента нет. Если он не пуст,то или мы нашли элемент, или рекурсивно вызвали функцию проврки для остатка списка.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.09.06 11:47
Оценка:
Здравствуйте, _rasta, Вы писали:

_>имхо тоже хороший ответ. емкий и лаконичный


Вспоминается реклама пива "Клинское"...

Сообщение без понтов...

... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Насколько важен синтаксис языка?
От: _rasta  
Дата: 07.09.06 11:53
Оценка:
Здравствуйте, Master Yoda, Вы писали:

_>>имхо тоже хороший ответ. емкий и лаконичный

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

а выше и был ответ на статью. и я, что забавно, согласен с Win2K.

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


продолжим не в этой ветке...

зы. я не думаю что ФП предназначен для разбора отдельных личностей. потоптались немного и имхо хватит...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[19]: Насколько важен синтаксис языка?
От: FR  
Дата: 07.09.06 12:02
Оценка: +1
Здравствуйте, Дарней, Вы писали:

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


FR>>У плохих программистов есть не меньше шансов поднять свой стартап.


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


Плохие программисты могут быть неплохими бизнесменами, я как минимум пару таких знаю.
Re[13]: Насколько важен синтаксис языка?
От: FR  
Дата: 07.09.06 12:02
Оценка:
Здравствуйте, VladD2, Вы писали:

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


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


VD>Надо сильно себя загипнотизировать чтобы верить в это. Вот IDEA написана на Яве. И думать тут нечего. VS напиана на С++ и в ней используется менеджед-код, но никто не хвастается, что VS менеджед-среда. Более того есть планы в будущем переписать VS на менеджед-языках.


А дольфин вполне вероятно (точно не знаю) написан на смалтоке и использует GUI библиотеку MFC написанную на C++.
Re[7]: Насколько важен синтаксис языка?
От: FR  
Дата: 07.09.06 12:02
Оценка:
Здравствуйте, Mirrorer, Вы писали:

VD>>Вместо них можно было спокойно использовать EBNF или что-то вроде.

M>А почему не используют ? Мне дествительно интересно (без подколок). И склоняюсь к мнению что наверное просто ничего удобнее не придумали. ИМХО конечно.

Придумали и уже довольно давно, и не EBNF
Это паттерн матчинг по строкам, как я понял впервые реализовали в сноболе потом в Icon, тут http://wilmott.ca/python/patternmatching.html описание и реализация для питона.
Re[15]: Насколько важен синтаксис языка?
От: Master Yoda Великобритания  
Дата: 07.09.06 12:08
Оценка: +2
Здравствуйте, _rasta, Вы писали:

_>а выше и был ответ на статью. и я, что забавно, согласен с Win2K.


Да я разве против, согласен так согласен.

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

_>зы. я не думаю что ФП предназначен для разбора отдельных личностей. потоптались немного и имхо хватит...


Что характерно еще пост назад вы сами не преминули поучаствовать в разборе, как же речь дошла до ответа на мой вопрос, вы предпочитаете прекратить дискуссию.
Да я в принципе согласен. Не было какого-то огромного желания в этом участвовать, просто вопрос некоторым образом затронул меня.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.