Re[7]: Насколько важен синтаксис языка?
От: Kisloid Мухосранск  
Дата: 05.09.06 12:53
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Да, уж. Забавно, что если бы не любовь к смешиванию с дерьмом, то их (егоЭ) бы было интересно послушать.


Кстати говоря да, я даже сегодня прочитал все сообщения Win2K'ея. Если фильтровать все его поливания дерьмом остальных, то он очень толковые вещи говорит, местами.
((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))
Re[9]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 12:57
Оценка: +2
Здравствуйте, Mirrorer, Вы писали:


VD>> Так что они есть просто потому, что нет легко доступных других срдств.

M>+1 Но что-то мне подсказывает что мейнстрим далеко не сразу примет альтернативу, даже если она появится..

Это он по инерции её не примет.

VD>>Так и Смолток. Да формально он жив, так как есть фэн-сайты, его кто-то использует. Но мы же говорим об его пригодности для мэйнстрима?

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

Когда появились регулярные выражения ничего их заменяющего и превосходящего не было. Вообще ничего, даже близко. С языками программирования не так: ассемблер может составить конкуренцию любому другому языку просто в результате инертности мышления
Re[13]: Насколько важен синтаксис языка?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 05.09.06 12:58
Оценка: -1
Здравствуйте, Дарней, Вы писали:

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


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

Д>Реально успешных проектов на нем я не вижу.


А где смотришь то?
Здесь?
Или Здесь?


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

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


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


К>>>Имхо ты неверно понял идею — возврат идёт в итератор по сути, который вернёт управление в твой блок.


FDS>>

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


FDS>>Тогда не понял, в чём разница


К>Смотри здесь
Автор: Eugene Beschastnov
Дата: 05.09.06


Да, я посмотрел. Но я понял так, что


Далее, в приведённом примере на Smalltalk нету метода "ifAbsent". Там есть метод "at:ifAbsent:" с двумя агрументами. Для лучшего понимания распишу максимально подробно, что происходит в этом примере (для простоты я не буду заострять внимание на том, что вызов метода осуществляется с помощью посылки сообщения — потому что в данном случае это не важно):
1) Предположим, этот код у нас выполняется в некотором методе method1.
2) У объекта msgs вызывается метод tables без аргументов. Назовём возвращаемый результат object1.
3) У объекта object1 (см. п.2) вызывается метод "at:ifAbsent:" с двумя аргументами. Первый аргумент — строка 'messages', второй аргумент — блок кода [^0]. Метод "at:ifAbsent:" (который, кстати, является стандартным и имеется у всех типов коллекций) выполняет следующее:
3.1) Проверяет, есть ли в коллекции, у которой его вызвали (т.е. у object1), объект с ключём, переданным в качестве первого аргумента (т.е. с 'messages').
3.2) Если есть — возвращает объект, лежащий в коллекции по этому ключу (назовём его object2).
3.3) Если нету — выполняет блок кода, переданный вторым аргументом (т.е. [^0]) и возвращает результат его выполнения. Здесь замечу, что в Smalltalk блоки выполняются в том контексте, где они были созданы — причём это касается как локальных переменных, так и позиции в стеке выполнения. В данном случае мы выполняем код "^0" в контексте метода method1. В Smalltalk символ "^" выполняет ровно то же самое действие, что ключевое слово "return" в си-подобных языках. Т.е. мы возвращаем 0 из метода method1 (см. п.1).
4) Ну и наконец, если мы еще не вышли из метода method1, присваиваем переменной msgTable объект object2 (см. п.3.2).


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


FDS>но тогда у нас получается, что этот блок кода просто очередные фигурные скобки, как и в других языках и никаких преимуществ

Что ты имеешь в виду под фигурными скобками? {} как в сях и шарпе?
В них можно передавать параметры?
Re[13]: Насколько важен синтаксис языка?
От: Master Yoda Великобритания  
Дата: 05.09.06 13:10
Оценка:
Здравствуйте, Дарней, Вы писали:

E>>А в приведенном мной примере она, т.е. волна, есть. И ты сам ее видишь:

E>>

E>>ах, этот RoR... как много рекламного звона вокруг него вьется!


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


Не согласен, мне в последнее время по популярным рассылкам начали частенько приходить новости по этому чуду. Вот в частности из последнего:

Ruby on Rails hands on: What's so hot about Rails? :

...
• By December 2006, you're likely to see more published books on Rails than any of Java's single flagship frameworks, including JSF, Spring, or Hibernate.
• The Rails framework has been downloaded at least 500,000 times in only its second year, as of May 2006. These statistics compare favorably with the most popular open source frameworks in any language.
• The Rails community mailing lists get hundreds of notes a day, compared to dozens on the most popular Web development frameworks in other languages.
• The Rails framework has caused an explosion in the use of the Ruby programming language, which has been relatively obscure until recently.
• The Rails buzz generates increasingly hot debates on portals that focus on other programming languages. The Java community in particular has fiercely debated the Rails platform
...


А то, что на RSDN пока мало кто кроме eao197 о нем говорит, это еще не показатель.

Д>Реально успешных проектов на нем я не вижу.


Насчет этого ничего сказать не могу.
... << 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[14]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 05.09.06 13:15
Оценка: -1
Здравствуйте, eao197, Вы писали:

E>А где смотришь то?

E>Здесь?
E>Или Здесь?

а о преимуществах Windows, мы, вероятно, пойдем читать на microsoft.com
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[15]: Насколько важен синтаксис языка?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 05.09.06 13:19
Оценка: +6
Здравствуйте, Дарней, Вы писали:

E>>Здесь?

E>>Или Здесь?

Д>а о преимуществах Windows, мы, вероятно, пойдем читать на microsoft.com


Изначально речь шла не о преимуществах а о запущенных на RoR проектах.
Я не понял, тебе список не нравится, проектов мало?

И таки да, если я захочу узнать, например, какие корпорации используют Windows, то буду искать эту информации на microsoft.com.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Насколько важен синтаксис языка?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 05.09.06 13:39
Оценка: :))
Здравствуйте, VladD2, Вы писали:

VD>>>...относиться с уважением и к другим. Они ведь тоже что-то сделали?!

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

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

VD>Со своей стороны хочу спросить. Я правильно понял, что по сути вопроса у тебя возражений нет?


Есть. Ты забываешь про лес и выделяешь деревья. Win2K очень много дельного говорит (как и камрад Kolhoz). Не знаю, зачем это ему нужно. Может быть, его тоже достал "майнстрим" со своими амбициями? Я вот ничего оскорбительного в его словах не вижу, хотя моя деятельность (как ты это по-соседству верно заметил) совпадала периодически с майнстримовой. Только я не думаю, что если мне довелось макнуться в... в майнстрим, то майнстрим — это рулез форевер.
<< Под музыку: Best of celtic music — Track 05 >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[9]: Насколько важен синтаксис языка?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 05.09.06 13:39
Оценка: -1
Здравствуйте, FDSC, Вы писали:

FDS>Почему вам это сообщение показалось смешным?


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

FDS>>>Меня испугало то, что можно выйти откуда угодно. Это значит, что вызвав некоторую функцию я не буду уверен, что она вернёт управление


EB>>Гхм... А как ты относишься к exception-ам?


FDS>Положительно


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

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



FDS>>но тогда у нас получается, что этот блок кода просто очередные фигурные скобки, как и в других языках и никаких преимуществ

К>Что ты имеешь в виду под фигурными скобками? {} как в сях и шарпе?
К>В них можно передавать параметры?

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

Я так и не понял, в чём разница

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


ANS>
ANS>msgTable := msgs tables at: 'messages' ifAbsent: [^0].
ANS>
Re[6]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.09.06 13:47
Оценка: 1 (1)
Здравствуйте, Sinclair, Вы писали:

S>Ну, вообще-то правильно — так:

S>
S>catch(KeyNotFoundException knfe)
S>


"И эти люди запрещают мне ковыряться в носу!" (с) Кстати, кстати, в коде Janus "KeyNotFoundException" не используется ни разу, а вот защитная проверка с помощью .Contains() — используется. К чему бы это?

S>1. Джава sux: нам не нужен никакой гет, вместо этого используется синтаксически более прозрачный индексер


те же яйца, только в профиль. Только синтаксис индексеров слишком убогий, для использования в, например, ConcurrentMap. Рассмотрим метод V putIfAbsent(K key, V value), который атомарно устанавливает значение, если по ключу еще не было записи, или еще более сложный случай — "boolean replace(K key, V oldValue, V newValue)", который атомарно устанавливает значение, только если по ключу лежит определённый элемент. В рамки индексеров такая семантика уже не влазит. И получается — половина доступов к словарю по индексеру, а половина по методам.

Короче — проперти и индексеры — сакс

S>2. Джава sux: а если в словаре хранятся значения примитивного типа, то мы что будем возвращать? А что делать, если мы хотим намеренно сохранить null?


В джава нельзя положить в словарь примитивный тип, так что со вторым пунктом всё впорядке

S>3. Смоллток sux: это что, нам надо в каждом методе предоставлять параметры для разных исходов? А если я этого не сделал?


Есть метод "at:" который просто кидает a KeyNotFoundError в случае чего. Выбор за программистом.

S>4. Смоллток sux: а теперь давайте сравним значения из двух словарей по ключу, при этом отсутствующие в любом из словарей считаем одной и той же ситуацией:

S>
S>        if (aMapLeft[key] != aMapRight[key]) mismatches++;
S>

S>Как мы передадим один и тот же continuation в два метода?

Во-первых, как я написал выше, код можно записать на исключениях один в один с этим. Во-вторых, ты можеш передать хоть 10 разных блоков в 10 разных методов — возврат то сработает только для одного — до остальных дело просто не дойдёт. В третих, можно создать один блок, присвоить его переменной и передавать в оба метода-доступа. От использования исключений этот способ будет отличаться только более явным выражениям намерения — в случае внутренней ошибки, которая выкинет KeyNotFoundException это не будет защитано за mismatch. То есть, этот код аналогичен не твоему примеру с исключениями, а коду с пред-проверками с Contains():
count := [mismatches := mismatches + 1].
externalKeys do: [:key | 
        (aMapLeft at: key ifAbsent: count) != (aMapRight at: key ifAbsent: count) 
            ifTrue: count]

vs.
foreach(string key in externalKeys) {
    if (!aMapLeft.Contains(key)) mismatches++;
    else if (!aMapRight.Contains(key)) mismatches++;
    else if (aMapLeft[key] != aMapRight[key]) mismatches++;
}

S>Я не против continuation, но реализация на них ыполне прямолинейной логики обработки ошибок — weird.

имхо, это не обработка ошибок, а обработка штатных ситуаций! В Java ради этого, вон, проверяемые исключения прикрутили. Только оказалось, что смешивать обработку ошибок и штатных ситуаций не совсем удобно.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[10]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 13:48
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

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


FDS>>Почему вам это сообщение показалось смешным?


ГВ>Этот постинг улыбнул меня своей пионерской наивностью. Я даже не нашёлся, что ответить.


И что вы тут видите такого наивного?
Re[10]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.09.06 13:49
Оценка: 5 (2) +2
Здравствуйте, FDSC, Вы писали:

M>>+1 Но что-то мне подсказывает что мейнстрим далеко не сразу примет альтернативу, даже если она появится..


FDS>Это он по инерции её не примет.


То есть, дело не в удобстве, а в инерции. Ну, наконецто.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[15]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 13:51
Оценка:
Здравствуйте, Eugene Beschastnov, Вы писали:

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


FDS>>>>Меня испугало то, что можно выйти откуда угодно. Это значит, что вызвав некоторую функцию я не буду уверен, что она вернёт управление


EB>>>Гхм... А как ты относишься к exception-ам?


FDS>>Положительно


EB>Извини, но я вижу в твоих словах некоторое противоречие.


Тут нет никаких противоречий. Exception возвращает управление вызывающей функции, а не к чёрту на кулички. И если уж ты его забыл обработать, так он вылезет тебе так, что ты сразу поймёшь — exception. А если функция просто куда-то не туда передаст управление, ищи её потом свищи.
Re[7]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 13:57
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


S>>Ну, вообще-то правильно — так:

S>>
S>>catch(KeyNotFoundException knfe)
S>>


ANS>"И эти люди запрещают мне ковыряться в носу!" (с) Кстати, кстати, в коде Janus "KeyNotFoundException" не используется ни разу, а вот защитная проверка с помощью .Contains() — используется. К чему бы это?


S>>1. Джава sux: нам не нужен никакой гет, вместо этого используется синтаксически более прозрачный индексер


ANS>те же яйца, только в профиль. Только синтаксис индексеров слишком убогий, для использования в, например, ConcurrentMap. Рассмотрим метод V putIfAbsent(K key, V value), который атомарно устанавливает значение, если по ключу еще не было записи, или еще более сложный случай — "boolean replace(K key, V oldValue, V newValue)", который атомарно устанавливает значение, только если по ключу лежит определённый элемент. В рамки индексеров такая семантика уже не влазит. И получается — половина доступов к словарю по индексеру, а половина по методам.


А кто мешает сделать индексатор Collection.putIfAbsent[K key, V value] ?

В общем, тут нет никаких преимуществ, так же как и, видимо, нет недостатков
Re[8]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.09.06 13:59
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>А кто мешает сделать индексатор Collection.putIfAbsent[K key, V value] ?


-1. изменение семантики оператора [].
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[11]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 14:00
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


M>>>+1 Но что-то мне подсказывает что мейнстрим далеко не сразу примет альтернативу, даже если она появится..


FDS>>Это он по инерции её не примет.


ANS>То есть, дело не в удобстве, а в инерции. Ну, наконец-то.


Не понял умора?
Всё равно, если удобство есть, то "майнстрим" всё примет, как принял, например, ALGOL-60 или FORTRAN, а затем и C++ и Java
Re[9]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 14:02
Оценка: :)
Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


FDS>>А кто мешает сделать индексатор Collection.putIfAbsent[K key, V value] ?


ANS>-1. изменение семантики оператора [].


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