Re[6]: Насколько важен синтаксис языка?
От: azzx Россия  
Дата: 05.09.06 09:18
Оценка: :)
Здравствуйте, FR, Вы писали:

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


A>>На Форте будет так:


A>>2 2 * .


FR>курить про метопрограммирование на форте.


Нафига?

Прикрутить к Форту, конечно, можно что угодно — но кому это надо-то?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Насколько важен синтаксис языка?
От: Mirrorer  
Дата: 05.09.06 09:19
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Интересно, а тебе лично он много преимуществ дал? Или кому-то еще?

Лично мне он дал возможность взглянуть на программирование под другим углом.
Можно ли считать это преимуществом ? Но опыт был интересным.
... << RSDN@Home 1.1.4 Pink Floyd — Another Brick In The Wall Part 2>>
Re[6]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 09:22
Оценка:
Здравствуйте, Vermicious Knid, Вы писали:

VK>VladD2, ты сильно на меня не сердись. Этот код можно было написать один-в-один, но без CPS. В Nemerle есть одна не очень хорошо документированная фича:

VK>
VK>    def parseComment(chars, name)
VK> ...
VK>    and parseMultilineComment(chars, name)   
VK> ...
VK>


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

В общем, смысл моего высказвания был в том, что CPS — это паттерн который можно применять практически в любом языке. И Смолток тут совершенно не причем.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 09:23
Оценка: :)
Здравствуйте, VladD2, Вы писали:

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


FDS>>Учтите, думать в нотации языка Pascal гораздо удобнее, чем в сишной, однако его клоны не так сильно распространены как си. Так что, возможно, дело в помочных эффектах


VD>Pascal и С — оба являются клонами Алгола/Фортрана. Так что учить один после другого не сложно. А выбор между ними — это выбор предпочтений.


Ага, однако программирование на них довольно сильно различается. Вообще говоря, просто думаешь другими понятиями. Да и если сравнить Фортран с C++, различия в синтаксисе довольно значимые. Я, например, испытывал затруднения, когда читал Фортрановские программы, зная C++ и Pascal, а вот C++ читал нормально, зная только Pascal.

VD>Смолток и Лисп другое дело. Именно об этом я и говорил когда рассуждал о традиционности.


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


Вы сами очень любите Nemerle, а его синтаксис (только не убеждайте меня, что он похож на C#, сам знаю) меня раздражает . Так что принципиально нет разницы между вами, говорящими что Nemerle лучше C# и людьми, говорящими, что Lisp лучше C.
Re[7]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 09:32
Оценка: +1
Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


Д>>>>и почему нельзя использовать ее с привычным С-style синтаксисом?


ANS>>>можно. У java слишком большой синтаксический оверхед, а в C#2 всё нормально для этого.


VD>>Ну, так и в чем дело? Чем тогда C# 2.0 хуже?


ANS>Я забыл упомянуть про такую фичу ST-блоков как нелокальный возврат (non-local return). Её несколько раз упоминали в этом форуме, но внимание особо не заостряли. Этой фичи нет ни в C#2, ни в java. То есть "с привычным С-синтаксисом" — можно, но по сути в C#2 — нельзя.


ANS>Рассмотрим уже привычный нам пример:


ANS>
ANS>aValue := aDictionary at: aKey ifAbsent: [return nil].
ANS>... тут идёт, при котором aValue всегда имеет корректное значение ...
ANS>


ANS>Вместо пугающей "крышечки" я написал слово "return". Так вот, "возврат" выполняется не в контексте блока, а в контексте где блок определён. То есть выполнение команды "return" из анонимной функции в C#, или метода анонимного класса в Java возвращают управление в код, вызвавший эту функцию. А в ST происходит возврат из того метода, где был блок определён. Отсутсвие этой фичи делает невозможным реализацию аналога at:ifAbsent: в Java и C#.


Такие штучки — путь к ошибкам
Re[5]: Насколько важен синтаксис языка?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 05.09.06 09:34
Оценка:
Здравствуйте, Дарней, Вы писали:

ГВ>>Значит, фанатам майнстрима Lisp никаких преимуществ не даст. Ну-с, что и требовалось доказать.

Д>Интересно, а тебе лично он много преимуществ дал? Или кому-то еще? Я пока не вижу кучу стартапов как у Грэхема, которые растут как грибы после дождя.

Знаешь, я сейчас очень хорошо почуял мотивы, которые двигают Win2K, когда он пишет свои резкие постинги. Отвечу почти копирайтом: не будет тебе органометрии. И темы для сплетен (это уже не тебе) — тоже не будет.

PS.: Вы задали хороший вопрос, коллега!
<< Под музыку: Gregorian — Moment Of Peace >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[6]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.09.06 09:49
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Если сравнить его с любым языком обладающим сопоставлением с образцом, то Смолток сольем по полной. Причем как по объему кода, так и по его понятности.


Пробовали уже
Автор: Vermicious Knid
Дата: 20.02.06
. И, Оказалось &mdash; неудачно-с
Автор: Vermicious Knid
Дата: 20.02.06
.

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


Я хотел бы что-бы вместо вот этого ужаса из Януса:
if (!msgs.Tables.Contains("message"))
    return 0;
DataTable msgTable = msgs.Tables["message"];


можно было просто написать:
msgTable := msgs tables at: 'messages' ifAbsent: [^0].
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[6]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 05.09.06 09:50
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

это не органометрия, это простое и вполне закономерное любопытство
есди некоторые экзотические языки дают такой офигенный выигрыш в производительности труда, то где же его результаты? Где расцветающие пышным цветом стартапы?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[8]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.09.06 09:53
Оценка: 1 (1) +1 -1 :))
Здравствуйте, FDSC, Вы писали:

FDS>Такие штучки — путь к ошибкам


бла-бла-бла?

ЗЫ: программирование это путь к ошибкам.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[7]: Насколько важен синтаксис языка?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 05.09.06 10:21
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>есди некоторые экзотические языки дают такой офигенный выигрыш в производительности труда, то где же его результаты? Где расцветающие пышным цветом стартапы?


Причём тут стартапы?
<< Под музыку: Medley — Biddy Mulligan, Whiskey On A Sunday, German Clockwinder, Isn't It Grand Boys >>
<< При помощи Януса: 1.2
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[3]: Насколько важен синтаксис языка?
От: quadrochups ЮАР  
Дата: 05.09.06 10:43
Оценка: +1
Q>> Ибо мозги у меня нормальные и когда я читаю "если условие, то сделать то-то", это более понимаемо, чем "условие :ЕслиДа делать то-то".

ANS>Не спора ради, но чисто из интереса, а как ты читаеш конструкцию:

ANS>
ANS>условие ? то-то : что-то;
ANS>


Что забавно, именно такая конструкция используется мною меньше всего! Да, ОЧЕНЬ ПОХОЖЕ на смоллток. Но это скорее приятное сокращение кода, нежели повсеместное правило языка.
Re[8]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 05.09.06 10:49
Оценка: :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Причём тут стартапы?


Ты не устаешь меня радовать. Я то думал, имя Грэхема тебе знакомо. А ты оказывается просто проигнорировал его, как и любой другой незнакомый тебе термин
ответ очень прост — большие компании консервативны и неповоротливы, они не могут извлечь пользу из новых технологий. Но стартапы этим не страдают, и они давно бы воспользовались любой технологией, которая может дать им преимущество. Хотя бы малейшее.
Поскольку я не вижу волны таких стартапов, построенных на "элитарных языках", я делаю простой вывод — все их преимущества высосаны из пальца.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[7]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 11:04
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Вместо пугающей "крышечки" я написал слово "return". Так вот, "возврат" выполняется не в контексте блока, а в контексте где блок определён. То есть выполнение команды "return" из анонимной функции в C#, или метода анонимного класса в Java возвращают управление в код, вызвавший эту функцию. А в ST происходит возврат из того метода, где был блок определён. Отсутсвие этой фичи делает невозможным реализацию аналога at:ifAbsent: в Java и C#.


Это уже особенности семантики областей замыканий. В общем-то полезное свойство для некоторых вещей (подобная техника используется в Скале, там это называется анонимными замыканиями, если не ошибаюсь).

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

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


ANS>Тогда извини.

ANS>Если ты уверен в том, что вместо одной операции лучше постоянно применять несколько более примитивных операций, то я не буду тебя переубеждать.

Вообще, я согласен с Дандреем. А ты вот апеллируешь к оппоненту, а не к фактам.
Применение "несколько более примитивных операций" слабо связано с языком. Оно скорее связано с тем как спроектирован класс.

Например, если создать наследника хэш-таблицы и реализовать в нем методы вроде:
/**
 * Returns an optional value associated with the specified key.
 */
public Get (key : 'a) : option ['b]
{
    mutable value;
    
    if (TryGetValue (key, out value))
        Some (value)
    else
        None ()
}
        
public TryGetValue (key : 'a) : 'b * bool
{
    mutable value;
    
    if (TryGetValue (key, out value))
        (value, true)
    else
        (value, false)
}

/**
 * Returns value associated with the specified key or default value (null for 
 * referece type and result of parameterless constractor for value type).
 */
public GetValueOrDefault (key : 'a) : 'b
{
    mutable value;
    
    ignore (TryGetValue (key, out value));
    
    value
}    

/**
 * Returns value associated with the specified key or defaultValue.
 */
public GetValueOrDefault (key : 'a, defaultValue : 'b) : 'b
{
    mutable value;
    
    if (TryGetValue (key, out value))
        value
    else
        defaultValue
}

/**
 * Returns value associated with the specified key or result of call getDefaultValue().
 * The getDefaultValue() called only if key not exists in collection.
 */
public GetValueOrGetDefault (key : 'a, getDefaultValue : void -> 'b) : 'b
{
    mutable value;
    
    if (TryGetValue (key, out value))
        value
    else
        getDefaultValue()
}


То в прикладном коде можно будет использовать довольно лаконичные и выразительные конструкции. Например:
def lst = hashtab.GetValueOrGetDefault(someKey, () => List()); // List создатстся только если ключа нет.
lst.Add(...);
...

Или
def count = hashtab.GetValueOrDefault(someKey, 0);
...

или
match (hashtab.Get())
{
    | Some(1) => // что-то делаем
    | Some(2) => // что-то делаем
    | Some(x) => // что-то делаем с 'x'
    | None    => // ключа нет в хэш-таблице
}

или
def (value, exists) = hashtab.TryGetValue(someKey);
if (exists)
 doSomethingWithValue(value)
else
 doSomethingElse();


ANS> Тем более, что в C# всё равно нет альтернативы последнему. Но в этом случае я не понимаю, почему народ так радовался появлению foreach, using в С# если проще всё делать по старинке по кусочкам?


foreach и using упрощает выражение часто используемых задач. При этом не код получается очень понятным. Лично я зачастую предпочитаю foreach даже более коротким вариантам.

Ты же (точнее идеология Смолтока) прелагаешь ради укарачивания записи жертвовать понятностью. Мол ничего что немного раком, за-то короче.

Написать функцию IfAbsent() или IfNotExists() можно и на C#. Да, управление в ней будет возвращаться в ту же точку, но это не проблема для большинства случаев. Более того код будет более структурным, а стало быть предсказуемым. Собственно моя функци GetValueOrGetDefault() решение очень близкое. Только она преполагает возврат значения и добавление ключа в хэштаблицу если его там еще нет.



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

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

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


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

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

IT>А мне короткого ?: ужасно не хватает


Борись с плохими привычками. Читать этот ?: сложнее.

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

ГВ>Все тут кое-что сделали в этой жизни,


Ага. Вот Win2k, например, пальцы от души погнул. Интересно, это новая реинкарнация Редуктора, или просто Лисп так сильно действует на тщеславие и понты?

ГВ> С характеристиками примитивности и ограниченности количество творений коррелирует слабо.


Серьезно? А я то думал, что есть обратная зависимость.

В общем, меня это не интересует. Но вот когда вижу понты и выпендреж аналогичный тем что демонстрирует Win2k, то сразу хочется спросить — "А что, прелесное дитя, с загнутыми в бабочау пальцами, ты сделал выдающегося в этой жизни?". Но сразу же думаю о том, что те кто действительно что-то делают обычно не занимаются дешевыми понтами. Ведь подобные понты — это детское самоутверждение. А человек чего-то достигший в жизни уже самоутвердился и относится к себе с уважением. Это заставляет его относиться с уважением и к другим. Они ведь тоже что-то сделали?!

ГВ>Для развлечения попробуй найти некую связь между понятием "основной поток" (mainstream) и, скажем, любимым мною высказыванием Н. Бора о бессмысленности голосования по теоретическим вопросам. Есть ещё куча подобных высказываний, которые принадлежат, естественно, отдельным личностям, а не "кодексу майнстрима".


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

Д>>Интересно, а тебе лично он много преимуществ дал? Или кому-то еще?

M>Лично мне он дал возможность взглянуть на программирование под другим углом.
M>Можно ли считать это преимуществом ? Но опыт был интересным.

С этим вряд ли кто поспорит. Изучить Лисп хотя бы теоритически (прочесть книжку по нему) полезно в принципе.

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

А Геннадий Васильев меня вообще радует. Сам являясь тепичным представителем мэйнстрима всячески пытается помочь унижению енр представителей. Мазохизм, однако.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.09.06 11:15
Оценка:
Здравствуйте, VladD2, Вы писали:

В общем, позиция твоя мне скорее понятна, но с ней я не согласен

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


комментарий на полях: на этот случай в ST есть метод at:ifAbsentPut:
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[9]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 05.09.06 11:21
Оценка: +1
Здравствуйте, VladD2, Вы писали:

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


Если таких операций много — может быть. Но это можно сделать и не корежа страшным образом синтаксис.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.