Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 03.09.06 20:59
Оценка:
В своей заметке Райан Бэйкер делает интересное, хотя очень спорное замечание:
В лиспе код есть данные и данные есть код, но в итоге в лиспе нет синтаксиса, только скобки, тогда как в техже сиподобных языках есть скобки для вызова функции, фигурные — для блоков кода, квадратные — для массивов. Всё это и многое другое делает код более легко делимым на разные смысловые "куски".
Так вот — хотелось бы рассмотреть вопрос: насколько синтаксис языка определяет его удобство для использования?
P.S. Данный вопрос выглядит интересным, к примеру в свете соседнего обсуждения Смолтолка с его тоже не очень "общепринятым" синтаксисом.
P.P.S. С данным мнением лично я не совсем согласен и меня не пугают горы скобок, да и синтаксис в лиспе присутствует (см. комментарии к заметке), "просто вы не умеете их готовить"
Re: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.09.06 00:45
Оценка: :))
Здравствуйте, Курилка, Вы писали:

К>"просто вы не умеете их готовить"


Не умеем. и не хомим уметь. Вот уже почти 35 лет как не хоим.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 04.09.06 07:32
Оценка: :)))
Здравствуйте, VladD2, Вы писали:

VD>Не умеем. и не хомим уметь. Вот уже почти 35 лет как не хоим.


Ты просто сильно старый.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[2]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 04.09.06 08:11
Оценка:
Здравствуйте, VladD2, Вы писали:

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


К>>"просто вы не умеете их готовить"


VD>Не умеем. и не хомим уметь. Вот уже почти 35 лет как не хоим.


Так никтож не заставляет
Ответь тогда на вопрос — что хотите? 35 лет?
Re: Насколько важен синтаксис языка?
От: quadrochups ЮАР  
Дата: 04.09.06 08:45
Оценка: 12 (1) +1 -3 :)
К>Так вот — хотелось бы рассмотреть вопрос: насколько синтаксис языка определяет его удобство для использования?

А что, для вас это всё ещё не очевидно? ГРОМАДНОЕ значение.


К>P.P.S. С данным мнением лично я не совсем согласен и меня не пугают горы скобок, да и синтаксис в лиспе присутствует (см. комментарии к заметке), "просто вы не умеете их готовить"


Ключевое слово — "не пугают". А инструмент должен ПОМОГАТЬ, а не "не пугать".

Я на выходных немного поковырял Смоллток и пришёл к выводу — всё таки нужен ДРУГОЙ язык. Ибо мозги у меня нормальные и когда я читаю "если условие, то сделать то-то", это более понимаемо, чем "условие :ЕслиДа делать то-то".
Re[2]: Насколько важен синтаксис языка?
От: Quintanar Россия  
Дата: 04.09.06 09:04
Оценка: +2 -2 :)
Здравствуйте, quadrochups, Вы писали:

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


Т.е. вы считаете любителей Smalltalk ненормальными? Как вы оценили собственную нормальность?
Re[2]: Насколько важен синтаксис языка?
От: Mirrorer  
Дата: 04.09.06 10:02
Оценка: 108 (7) +4
Здравствуйте, quadrochups, Вы писали:


Q>Ключевое слово — "не пугают". А инструмент должен ПОМОГАТЬ, а не "не пугать".


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


Китайский
wo shi xiansheng
Я есть учитель

Японский
watakutsi wa sensei des.
я (указание на то, что я — тема предложения) учителем являюсь

Английский
I am teacher.
Я есть учитель.

Русский
Я учитель.

Какой из приведенных вариантов "нормальный" ?
И если какой-то из них ненормальный, то как может туева хуча людей им пользоваться ?
... << RSDN@Home 1.1.4 1A>>
Re: Насколько важен синтаксис языка?
От: azzx Россия  
Дата: 04.09.06 11:06
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Так вот — хотелось бы рассмотреть вопрос: насколько синтаксис языка определяет его удобство для использования?


Это ЕДИНСТВЕННОЕ что действительно отличает один язык от другого.
Все остальные отличия, имхо, есть лиш особенности конкретных сред разработки,
как это ни странно звучит.

зЫ: Познакомьтес с Фортом — он может вообще всё, но захотите ли вы этим воспользоваться?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 04.09.06 11:10
Оценка: +1 -4
Здравствуйте, Mirrorer, Вы писали:

M>Какой из приведенных вариантов "нормальный" ?

M>И если какой-то из них ненормальный, то как может туева хуча людей им пользоваться ?

начнем с того, что подавляющее большинство языков программирования базируется на английском языке
Поэтому "нормальный" вариант вроде бы достаточно очевиден — это тот, который соответствует принципу наименьшей неожиданности. Никогда не понимал любителей "птичьей" нотации Ну или китайской, если угодно
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[3]: Насколько важен синтаксис языка?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 04.09.06 11:17
Оценка: 1 (1) :))) :))) :))) :)))
Здравствуйте, Курилка, Вы писали:

К>>>"просто вы не умеете их готовить"

VD>>Не умеем. и не хомим уметь. Вот уже почти 35 лет как не хоим.

К>Так никтож не заставляет

К>Ответь тогда на вопрос — что хотите? 35 лет?

Они 35 лет нехотят Lisp. Это йога такая — нехотеть Lisp. (заговорщически) Слышал, наверное, про "не думать о белой обезьяне"? Так вот, это почти оно.
<< Под музыку: Blackmoore's Night — Play, Minstrel, play >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[4]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 04.09.06 11:28
Оценка: +2
Здравствуйте, Дарней, Вы писали:

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

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

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

ANS>Да вам, батенька, прямая дорога в Кобол.


почему обязательно кобол?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[2]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 04.09.06 11:33
Оценка:
Здравствуйте, azzx, Вы писали:

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


К>>Так вот — хотелось бы рассмотреть вопрос: насколько синтаксис языка определяет его удобство для использования?


A>Это ЕДИНСТВЕННОЕ что действительно отличает один язык от другого.

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

Нисколько не единственное, покажи мне замыкания и континьюэйшны на лого?
Конечно в итоге всё к машинным кодам сводится, но программист оперирует понятиями/возможностями конкретного языка, на котором пишет

A>зЫ: Познакомьтес с Фортом — он может вообще всё, но захотите ли вы этим воспользоваться?


Может всё любой полный по тьюрингу язык — а толку? Давайте все будем писать на брейнфаке?
Re[4]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 04.09.06 11:36
Оценка:
Здравствуйте, Дарней, Вы писали:

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


M>>Какой из приведенных вариантов "нормальный" ?

M>>И если какой-то из них ненормальный, то как может туева хуча людей им пользоваться ?

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

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

А то что русский, на котором ты говоришь, есть далеко не один из простейших языков тебя не смущает?
Вопрос стоит не в пороге вхождения (который может быть немаленьким), а именно удобство использования.
Вот скажи — регулярные выражения с их "птичьим" языком ты используешь?
Re[4]: Насколько важен синтаксис языка?
От: Mirrorer  
Дата: 04.09.06 11:48
Оценка: 34 (4) +1
Здравствуйте, Дарней, Вы писали:

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

Оно то конечно да, но почему во все мейнстримовые языки добавили поддержку регулярных выражений ?
Куда уж более птичья вещь, но наверное более понятная и менее подверженная ошибкам чем ручная реализация ДКА ?

Д>Никогда не понимал любителей "птичьей" нотации

Любителей тоже не понимал никогда. не говоря уже о профессионалах [птичьей нотации] .
Но в некоторых случаях птичьи фишки бывают полезными.=
Программу любой сложности можно написать на
Asm, C, C++, J, Lisp, Prolog, Haskell, Forth

Но целесообразно ли каждую задачу решать на одном и том же языке ?
Для общения с китайцами лучше подходит китайский, для общения с русскими — русский.
Конечно, в некоторых случаях есть общий знаменатель (английский, CORBA), но всегда ли он применим ?

Целесообразно ли все болезни лечить при помощи скальпеля ?
Конечно подготовка врачей при этом значительно упрощается. Достаточно 2-хмесячных курсов и специалист готов И такие специалисты будут абсолютно уверены что скальпель наше все ! А прочие инструменты и методики — от лукавого.

[Цитата]
Послушайте!
Ведь, если звезды зажигают —
значит — это кому-нибудь нужно?
Значит — кто-то хочет, чтобы они были?
Значит — кто-то называет эти плевочки
жемчужиной?
(С)
[/Цитата]

Д>Ну или китайской, если угодно

Тем не менее около миллиарда людей вполне довольны

ЗЫ. Disclaimer.
Я НЕ функциональщик.
Мой основной язык по работе — C#.
Но мне нравится смотреть на мир с различных точек зрения.
И если при этом приходится немного вывихнуть мозги — что ж, это делает жизнь только интереснее. Будь то изучение Lisp, Haskell, J или китайского
... << RSDN@Home 1.1.4 Pink Floyd — Don't Leave Me Now>>
Re: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 04.09.06 11:49
Оценка: 52 (2) +3
Здравствуйте, Курилка, Вы писали:

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

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

1. Синтаксис важен тем, что к нему надо привыкать. Так что чем более знакомый синтаксис, тем лучше
2. Синтаксис важет тем, что его нужно помнить и выражать на нём свои мысли: чем более лёгкий синтаксис и чем ближе он к естественным объектам, тем лучше (не в ущерб языку). В частности это значит, что синтаксис должен позволять как можно меньше задумываться над написанием программы, что для lisp несправедливо (судя по вышесказанному, сам на lisp не программировал)
3. Синтаксис может раздражать. Например тем, что от него рябит в глазах и он вообще нечитаемый.
Типа $#tree^&{free-==return new SuperObject&^$*"&@"#^$"*(@^$} (это я просто что попало набрал)
Или, напрмер, разражать тем, что при появлении новой функции нужно лезть в другой файл и объявлять её и там, и в модуле, где она реализуется
4. Чем больше отношений реальных объектов можно выразить посредством читаемой нотации, тем лучше

В общем, синтаксис важен, но ещё более важно, как написаны под язык стандартные библиотеки.
Всё это важно в первую очередь тем, что синтаксис языка непосредственно влияет на мышление программиста и чем меньше он должен сопротивляться этому влиянию (т.е. влиянию мыслить на языке программирования или адаптировать свои мысли под него), тем лучше
Re[5]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 04.09.06 11:50
Оценка:
Здравствуйте, Курилка, Вы писали:

К>А то что русский, на котором ты говоришь, есть далеко не один из простейших языков тебя не смущает?


А я и не говорил о простоте. Я говорил о привычности.

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


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

К>Вот скажи — регулярные выражения с их "птичьим" языком ты используешь?


Использую — достойных альтернатив пока нет. Очень хороший пример, кстати.
Писать их очень легко, но читать любые мало-мальски нетривиальные выражения без специальных средств практически невозможно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[6]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 04.09.06 12:00
Оценка:
Здравствуйте, Дарней, Вы писали:

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


К>>А то что русский, на котором ты говоришь, есть далеко не один из простейших языков тебя не смущает?


Д>А я и не говорил о простоте. Я говорил о привычности.

Сишные конструкции тоже не сразу становятся привычными

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


Д>Верно. Но не нужно делать порог выше без всякой необходимости.

Д>Если кому-нибудь взбредет в голову создать язык C-Soft, заменив все ключевые слова в C# на наречие племени мумбо-юмбо, а все числа записывая только в тринадцатеричной системе, удобства от этого отнюдь не прибавится. А вот порог вхождения повысится, да еще как

Я говорил о разнице в синтаксисе, которая имеет смысл из каких-либо соображений, из того же удобства каких-то операций и т.п. В том же лиспе скобки из-за единства данных и кода, в форте — из-за стековой организации вычислений. Зачем наречие мумбо-юмбо тебе нужно, я не улавливаю

К>>Вот скажи — регулярные выражения с их "птичьим" языком ты используешь?


Д>Использую — достойных альтернатив пока нет. Очень хороший пример, кстати.

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

Вот видишь — ты сам себе противоречишь. Привычность в рег. выражениях чуть ли не отрицательная, но удобство на лицо.
Re[2]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 04.09.06 12:04
Оценка: 24 (4)
Здравствуйте, quadrochups, Вы писали:

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


В корне не верно! Читать нужно не "условие :ЕслиДа делать то-то", а "если получатель захочет, то выполнить один код, если что-то другое — другой код, третье — третий". Когда получатель сообщения простой Boolean это частный случай. Подобный подход используется в ST, например, так:
value := aDictionary at: aKey ifAbsent: [...обрабатываем ситуацию...].

сравни с традиционной Java:
V value = aMap.get(key);
if (value == null) {...обрабатываем ситуацию...}

Первый вариант и более короткий и более понятный!

Техника, когда в функцию передаётся продолжение, получающее управление, вместо возврата из функции называется Continuation-passing style (CPS). Так что, за синтаксисом очень часто скрывается некая идея, и говоря "я не считаю нужным приспосабливать мозги под этот синтаксис" ты фактически говоришь "я не желаю ничего знать об этих техниках, и не желаю изучать где они могут применятся, зачем они придуманы". В результате ты не сможеш ни распознать подобные техники в коде, если их кто применит, не сможеш применить их самостоятельно.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[5]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 04.09.06 12:07
Оценка: -1
Здравствуйте, Mirrorer, Вы писали:

M>Целесообразно ли все болезни лечить при помощи скальпеля ?


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

Д>>Ну или китайской, если угодно


M>Тем не менее около миллиарда людей вполне довольны


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

M>И если при этом приходится немного вывихнуть мозги — что ж, это делает жизнь только интереснее. Будь то изучение Lisp, Haskell, J или китайского


Главное — не синтаксис, главное — идеи. Так что повывихивать мозги над монадами наверно имеет смысл, хотя бы для того, чтобы быть в курсе. А вот вывихивать мозги над 1001-ой инкарнацией оператора if — просто дурь полнейшая.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[6]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 04.09.06 12:15
Оценка: 1 (1) +1 :))) :))
Здравствуйте, Дарней, Вы писали:

ANS>>Да вам, батенька, прямая дорога в Кобол.


Д>почему обязательно кобол?


ADD UserInput TO RunningTotal
        ON SIZE ERROR DISPLAY "Error - new total too large for data-item."
        NOT ON SIZE ERROR ADD 1 TO IterCount END-ADD
END-ADD

еще б заставили цифры прописью писать и многим тут было бы было счастье
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[6]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 04.09.06 12:16
Оценка:
Здравствуйте, Дарней, Вы писали:

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


M>>Целесообразно ли все болезни лечить при помощи скальпеля ?


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


Д>>>Ну или китайской, если угодно


M>>Тем не менее около миллиарда людей вполне довольны


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

Ага, ты это расскажи тем же немцам, где территория не с фиг, а ситуации такие же происходят (я уж не говорю про ту же Швейцарию )

M>>И если при этом приходится немного вывихнуть мозги — что ж, это делает жизнь только интереснее. Будь то изучение Lisp, Haskell, J или китайского


Д>Главное — не синтаксис, главное — идеи. Так что повывихивать мозги над монадами наверно имеет смысл, хотя бы для того, чтобы быть в курсе. А вот вывихивать мозги над 1001-ой инкарнацией оператора if — просто дурь полнейшая.


Т.е. ты думаешь что без изменения синтаксиса можно все идеи реализовать? Покажи мне другой язык на которома данные = код, к примеру?
Вон на руби пытаются местами такое же делать (вроде Markby библиотечка проскаливала с подобным), но это лишь частично и не C# безусловно
Re[7]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 04.09.06 12:18
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


ANS>>>Да вам, батенька, прямая дорога в Кобол.


Д>>почему обязательно кобол?


ANS>
ANS>ADD UserInput TO RunningTotal
ANS>        ON SIZE ERROR DISPLAY "Error - new total too large for data-item."
ANS>        NOT ON SIZE ERROR ADD 1 TO IterCount END-ADD
ANS>END-ADD
ANS>

ANS>еще б заставили цифры прописью писать и многим тут было бы было счастье

И платили бы ещё за каждый набитый символ
Re[6]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 04.09.06 12:18
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Главное — не синтаксис, главное — идеи.


о! молодец.

Д> А вот вывихивать мозги над 1001-ой инкарнацией оператора if — просто дурь полнейшая.


а вот стоит понять, что это не оператор if
Автор: Andrei N.Sobchuck
Дата: 04.09.06
.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[7]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 04.09.06 12:25
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Сишные конструкции тоже не сразу становятся привычными


не знаю, у меня они никаких проблем не вызывали

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


Скобки везде есть, только разные. Но зачем писать ужасы наподобие вот того?
(1=1) ifTrue: ['hello' out].

чем обыкновенный if (l==1) плох?

К>Вот видишь — ты сам себе противоречишь. Привычность в рег. выражениях чуть ли не отрицательная, но удобство на лицо.


Почему это вдруг привычность у них маленькая?
А вот проблем с удобством чтения у них до хрена, это факт.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[8]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 04.09.06 12:33
Оценка:
Здравствуйте, Дарней, Вы писали:

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


К>>Вот видишь — ты сам себе противоречишь. Привычность в рег. выражениях чуть ли не отрицательная, но удобство на лицо.


Д>Почему это вдруг привычность у них маленькая?

А теперь скажи — откуда они тебе были привычны, до того, как ты с ними начал разбираться?

Д>А вот проблем с удобством чтения у них до хрена, это факт.

Ну хоть это не отрицаешь, спасибо
Re[6]: Насколько важен синтаксис языка?
От: Mirrorer  
Дата: 04.09.06 12:35
Оценка: :)
Здравствуйте, Дарней, Вы писали:

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

+1. В принципе согласен. Но есть ли принципиальня разница между вилкой с 3-мя зубцами и 4-мя ?
У Smalltalk несколько иная иделогия, вот и синтаксис другой.
У всех C-подобных языков if выглядит примерно одинаково.

[Занудство = Вкл.]
Д>В китайском огромное количество диалектов,
основных что-то около 7, причем на самом используемом говорит около 90% населения.

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

Примерно так оно и есть. Но все же я бы заменил "нередки" на "иногда".

Д> так что грамотных людей там не так уж и много.

http://old.russ.ru/ist_sovr/sumerki/20010412_salit-pr.html
[Цитата]
Так, в отличие от еще одного азиатского исполина — Индии, Китай является страной с высоким и быстро растущим уровнем грамотности населения, в том числе крестьянского (составляющего основную массу населения в обеих странах). Неграмотными в Китае остаются лишь 15-17% взрослого населения (47% в Индии, 61% в Бангладеш, 59% в Пакистане, 27% в Иране, 17% в Турции, 15% в Индонезии). Еще лучше у КНР другой важный индикатор — доля неграмотных женщин в возрастной группе 15-24 года. Он показывает эффективность борьбы с неграмотностью за последние двадцать лет и косвенно свидетельствует о положении женщин в семье и обществе. В Китае указанный показатель составляет всего 4%. Этот же индикатор достигает 44% в Индии, 63% в Бангладеш, 61% в Пакистане, 10% в Иране, 8% в Турции, 4% в Индонезии.
[/Цитата]
[Занудство = Выкл.]


Д>Главное — не синтаксис, главное — идеи.

+1

Д> А вот вывихивать мозги над 1001-ой инкарнацией оператора if — просто дурь полнейшая.

Обычно вывихивать не приходится. А если приходится, то "это ЖЖЖЖЖ неспроста !"(С)
Имхо, конечно.
... << RSDN@Home 1.1.4 Pink Floyd — In The Flesh?>>
Re[7]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 04.09.06 12:37
Оценка: +1 -1
Здравствуйте, Andrei N.Sobchuck, Вы писали:

Ну это уже дурь. Зачем писать прописью математические вычисления, когда есть вполне привычная математическая нотация?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[7]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 04.09.06 12:37
Оценка: :)
Здравствуйте, Курилка, Вы писали:

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

К>Вон на руби пытаются местами такое же делать (вроде Markby библиотечка проскаливала с подобным), но это лишь частично и не C# безусловно

не бейте меня ногами, но... Немерле?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[3]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 04.09.06 12:37
Оценка: :)
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>
ANS>value := aDictionary at: aKey ifAbsent: [...обрабатываем ситуацию...].
ANS>

ANS>сравни с традиционной Java:
ANS>
ANS>V value = aMap.get(key);
ANS>if (value == null) {...обрабатываем ситуацию...}
ANS>

ANS>Первый вариант и более короткий и более понятный!

ИМХО, слишком напоминает Си с его порочной практикой писать фокусы наподобие while (*src++ = *dst++);
Короче — да, немного. Но запись aDictionary at: aKey уж ничуть не понятнее, чем aDictionary[aKey].
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[9]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 04.09.06 12:44
Оценка: :)
Здравствуйте, Курилка, Вы писали:

К>А теперь скажи — откуда они тебе были привычны, до того, как ты с ними начал разбираться?


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

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


Ну начинается. Ты ж сам хотел, что бы всё было на английском
Автор: Дарней
Дата: 04.09.06
.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[9]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 04.09.06 13:26
Оценка: +2 -1
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Ну начинается. Ты ж сам хотел, что бы всё было на английском
Автор: Дарней
Дата: 04.09.06
.


нет, ты искажаешь мою мысль.
я хотел, чтобы всё было сделано наиболее привычным юзеру (в данном случае — программеру) образом
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[3]: Насколько важен синтаксис языка?
От: quadrochups ЮАР  
Дата: 04.09.06 13:30
Оценка: +2 -6 :)
Quadro>>Я на выходных немного поковырял Смоллток и пришёл к выводу — всё таки нужен ДРУГОЙ язык. Ибо мозги у меня нормальные и когда я читаю "если условие, то сделать то-то", это более понимаемо, чем "условие :ЕслиДа делать то-то".

ANS>В корне не верно! Читать нужно не "условие :ЕслиДа делать то-то", а ....



К сожалению, ваше мышление уже исковеркано — как вы можете мне объяснять как надо читать? Я, слава небу, русский, знаю немного английский и Си. Так вот: конструкции Си, пройдя 30-летнюю проверку временем, стали практически стандартом: Си, Си++, Жаба, Це-шарп, Немерля — ВСЕ используют эту краткую и удобную нотацию. Неужто Смоллтоковское положение "на обочине" для вас не доказательство его ущербности? (заметьте — даже у ОПЫТНЫХ программеров!)
Безусловно, КАК ИДЕЯ Смолток великолепен. Но в унификации "объект-сообщение" авторы не учли одного — ДУМАТЬ в такой нотации неудобно. Это как показывать время в виде двоичных чисел — вроде бы то же самое, но пользоваться этим совершенно невозможно!



ANS>Техника, когда в функцию передаётся продолжение....


Всё это очень забавно, но ПО СУТИ не добавляет НИЧЕГО в семантику программы. Будет обработчик в иксепшыне, или после проверки error code, или в вашем continuation значения НЕ ИМЕЕТ. Я скажу больше — CPS и возник-то именно благодаря тому, что "обычный IF" не вписывался в идеологию "объект-сообщение" — вот и превратили лошадь в верблюда...


ANS> Так что, за синтаксисом очень часто скрывается некая идея


Ну вы просто открыли мне глаза!


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


Враньё и передёргивание. Стыдно, товарищ! А ещё в галстуке...
Вы нагло подменили понятие СИНТАКСИСА и ТЕХНИКИ. Техника — она одна, а способов её выражения — мильён и два напёрстка! Эти способы и называются синтаксис.


Но давайте вернёмся к исходному вопросу... Что есть ваше утверждение? Моё — я считаю, что синтаксис ОЧЕНЬ ВАЖЕН.
Re[4]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 04.09.06 13:43
Оценка: +4 :)
Здравствуйте, quadrochups, Вы писали:

Q>К сожалению, ваше мышление уже исковеркано


с чего ты взял, что можеш что-то сказать про моё мышление?

Q> — как вы можете мне объяснять как надо читать?


если "чукча не читатель, чукча писатель" (с) анек., то объяснить действительно ничего невозможно.

Q> Я, слава небу, русский, знаю немного английский и Си.


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

Q>Но давайте вернёмся к исходному вопросу... Что есть ваше утверждение? Моё — я считаю, что синтаксис ОЧЕНЬ ВАЖЕН.


Для начала полностью раскрой свою мысль. Ты считаеш, что "С-синтаксис очень важен".
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[3]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 04.09.06 14:41
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

и все-таки, какие офигенные плюсы дает такая техника?
и почему нельзя использовать ее с привычным С-style синтаксисом?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[7]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 04.09.06 14:50
Оценка: +1
Здравствуйте, Курилка, Вы писали:

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


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


M>>>Целесообразно ли все болезни лечить при помощи скальпеля ?


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


Д>>>>Ну или китайской, если угодно


M>>>Тем не менее около миллиарда людей вполне довольны


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

К>Ага, ты это расскажи тем же немцам, где территория не с фиг, а ситуации такие же происходят (я уж не говорю про ту же Швейцарию )

M>>>И если при этом приходится немного вывихнуть мозги — что ж, это делает жизнь только интереснее. Будь то изучение Lisp, Haskell, J или китайского


Д>>Главное — не синтаксис, главное — идеи. Так что повывихивать мозги над монадами наверно имеет смысл, хотя бы для того, чтобы быть в курсе. А вот вывихивать мозги над 1001-ой инкарнацией оператора if — просто дурь полнейшая.


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


На полном по Тьюрингу языке можно реализовать все идеи. Вопрос, во что это станет
Re[4]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 04.09.06 14:55
Оценка:
Здравствуйте, quadrochups, Вы писали:

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


ANS>>В корне не верно! Читать нужно не "условие :ЕслиДа делать то-то", а ....



Q>К сожалению, ваше мышление уже исковеркано — как вы можете мне объяснять как надо читать? Я, слава небу, русский, знаю немного английский и Си. Так вот: конструкции Си, пройдя 30-летнюю проверку временем, стали практически стандартом: Си, Си++, Жаба, Це-шарп, Немерля — ВСЕ используют эту краткую и удобную нотацию. Неужто Смоллтоковское положение "на обочине" для вас не доказательство его ущербности? (заметьте — даже у ОПЫТНЫХ программеров!)

Q>Безусловно, КАК ИДЕЯ Смолток великолепен. Но в унификации "объект-сообщение" авторы не учли одного — ДУМАТЬ в такой нотации неудобно. Это как показывать время в виде двоичных чисел — вроде бы то же самое, но пользоваться этим совершенно невозможно!

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

ANS>> Так что, за синтаксисом очень часто скрывается некая идея


Q>Ну вы просто открыли мне глаза!

Ну, оба посмешили

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


Q>Враньё и передёргивание. Стыдно, товарищ! А ещё в галстуке...

Q>Вы нагло подменили понятие СИНТАКСИСА и ТЕХНИКИ. Техника — она одна, а способов её выражения — мильён и два напёрстка! Эти способы и называются синтаксис.

Синтаксис часто выражает собой технику. В частности, это можно сказать про C и Pascal — это две разные ТЕХНИКИ.
Re[4]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 04.09.06 15:33
Оценка: +1 -4
Здравствуйте, Дарней, Вы писали:

Д>и все-таки, какие офигенные плюсы дает такая техника?


выше степень переиспользования кода, выше уровень абстракции, выше степень инкапсуляции.

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


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

PS Кстати, этот вариант
value := aDictionary at: aKey ifAbsent: [...обрабатываем ситуацию...].

легко получается из этого:
V value = aMap.get(key);
if (value == null) {...обрабатываем ситуацию...}

В начале нужно объеденить первую и вторую строчку, потому что эти две физические конструкции объеденяют одну логическую. И так, убираем точку-с-запятой и переносим "if" на верх. Затем вместо шифровки "value == null" пишем простое и понятное "Absent". И, вуаля...
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[2]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 04.09.06 15:33
Оценка:
Здравствуйте, quadrochups, Вы писали:

Q> Ибо мозги у меня нормальные и когда я читаю "если условие, то сделать то-то", это более понимаемо, чем "условие :ЕслиДа делать то-то".


Не спора ради, но чисто из интереса, а как ты читаеш конструкцию:
условие ? то-то : что-то;

?
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[4]: Насколько важен синтаксис языка?
От: c-smile Канада http://terrainformatica.com
Дата: 04.09.06 17:36
Оценка: :))) :))) :))
Здравствуйте, Геннадий Васильев, Вы писали:

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


К>>>>"просто вы не умеете их готовить"

VD>>>Не умеем. и не хомим уметь. Вот уже почти 35 лет как не хоим.

К>>Так никтож не заставляет

К>>Ответь тогда на вопрос — что хотите? 35 лет?

ГВ>Они 35 лет нехотят Lisp. Это йога такая — нехотеть Lisp. (заговорщически) Слышал, наверное, про "не думать о белой обезьяне"? Так вот, это почти оно.


В науке это состояние души называется нигилисп.

В оригинале, кстати, было сказано "не хомим Lisp" или "не хоим Lisp".
Re[3]: Насколько важен синтаксис языка?
От: pavel74  
Дата: 04.09.06 18:19
Оценка: +2
Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


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

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

ANS>?
Вопрос не мне, но выскажусь тоже, заранее прошу прощения за лексику, но "ужас нах" . Да я, плохо знаю С и его потомков. На работе используем Delphi+VBA+TSQL.

лучше уж как в SmallTalk:
условие еслиИстина: [делаем то-то].

Вообще говоря все дело привычки. Конечно же напрягает "мозги выворачивать" если привык к определенному синтаксису (например алголоподобным if-ам), кого-то больше кого-то меньше, кого-то недолго кому-то совсем "ниасилить". Все зависит от конкретного индивидума, так что споры бессмысленны.
Re[2]: Насколько важен синтаксис языка?
От: Beam Россия  
Дата: 04.09.06 18:39
Оценка: +1 -1 :))) :)
Здравствуйте, quadrochups, Вы писали:

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


Ну очень захотелось написать.

Я на выходных немного поковырял Java и C# и пришёл к выводу — всё таки нужен ДРУГОЙ язык. Ибо мозги у меня нормальные и когда я читаю "условие еслиДа: (делать то-то)", это более понимаемо, чем "если (условие) {сделать то-то}". Ну где здесь объекты? Где сообщения? Не по-ни-ма-ю!!!

Извините, не сдержался...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Best regards, Буравчик
Re[3]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.09.06 19:18
Оценка: +1 :)))
Здравствуйте, Quintanar, Вы писали:

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


А, думашь, можно назвать нормальными людей безастенчиво обсуждающих простоту и логичность чего-то в теме с названием "есть что-то с нармальным синтаксисом"?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.09.06 19:18
Оценка: +1
Здравствуйте, Mirrorer, Вы писали:

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


Во всех? Ой ли. Если только через библиотеки.
Ну, а почему — понятно. По глупости. Ужасный, нечитаемый язык эти регексы. Вместо них можно было спокойно использовать EBNF или что-то вроде.

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

Q>ДУМАТЬ в такой нотации неудобно.


Я бы сказал "не привычно". И этого достаточно чтобы язык остался на обочине на всегда. Остальное предпочтения и незначимые детали.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.09.06 19:18
Оценка:
Здравствуйте, quadrochups, Вы писали:

Q>Всё это очень забавно, но ПО СУТИ не добавляет НИЧЕГО в семантику программы. Будет обработчик в иксепшыне, или после проверки error code, или в вашем continuation значения НЕ ИМЕЕТ. Я скажу больше — CPS и возник-то именно благодаря тому, что "обычный IF" не вписывался в идеологию "объект-сообщение" — вот и превратили лошадь в верблюда...


Нет. Конечно, нет. CPS — это забавный прием упрощающий в некоторых случаях решение проблем. Вот только к смолтоковскому вывернутому синтаксису CPS отношения не имеет. CPS можно применять в любом языке. Правда желательно чтобы копилятор обеспечивал некоторые оптимизации (вроде устранения концевой рекурсии), но это ерунда. Вот, например, я тут как-то извращался (код парсинга квалифицированного идентификатора (разделенного точками)):
public ParseQualIdent(text : string) : list[string]
{
    def str = System.Text.StringBuilder();

    def parseComment(chars, name, continuation)
    {
        match (chars)
        {
            | '\n' :: tail
            | '\r' :: '\n' :: tail
            | '\r' :: tail => continuation(tail, name)
            | _ => parseComment(chars, name, continuation)
        }
    }

    def parseMultilineComment(chars, name, continuation)
    {
        match (chars)
        {
            | '*' :: '/' :: tail => continuation(tail, name)
            | _ => parseMultilineComment(chars, name, continuation)
        }
    }

    def parse(chars, name : list[string])
    {
        match (chars)
        {
            | '/' :: '/' :: tail => parseComment(tail, name, parse)
            | '/' :: '*' :: tail => parseMultilineComment(tail, name, parse)
            | '.' :: tail => def x = str.ToString(); str.Length = 0; parse(tail, x :: name);
            | x :: tail when char.IsLetterOrDigit(x) || x == '_' => ignore(str.Append(x)); parse(tail, name);
            | _ :: tail => parse(tail, name);
            | [] => str.ToString() :: name
        }
    }

  // Explode преобразует строку в список символов
    parse(text.Explode(), []).Rev()
}
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.09.06 19:18
Оценка:
Здравствуйте, FDSC, Вы писали:

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


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

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

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

ANS>выше степень переиспользования кода, выше уровень абстракции, выше степень инкапсуляции.


Да? Докажи. А пока это утврждение будем считать шуткой юмора.

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


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


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

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

ANS>PS Кстати, этот вариант

ANS>
ANS>value := aDictionary at: aKey ifAbsent: [...обрабатываем ситуацию...].
ANS>

ANS>легко получается из этого:
ANS>
ANS>V value = aMap.get(key);
ANS>if (value == null) {...обрабатываем ситуацию...}
ANS>

ANS>В начале нужно объеденить первую и вторую строчку, потому что эти две физические конструкции объеденяют одну логическую. И так, убираем точку-с-запятой и переносим "if" на верх. Затем вместо шифровки "value == null" пишем простое и понятное "Absent". И, вуаля...

Ты лучше объясни, что ты хочешь добиться этим кодом. А то я уверен, что если код примет опсмысленный вид, то его можно будет записать и короче, и понятнее и без каких-либо вывертов в язке.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.09.06 19:18
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

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

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

ANS>?

Кстати, неудобная конструкция. В Немерле она выглядит куда понятнее:
if (условие) то-то else что-то

по тому в C#/С++ я редко использовал "?:", а вложенных вообще избегал, а в Немерле во всю использую ифы любой сложности. Правда наличие кострукции match зачастую делает и их ненужными.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Насколько важен синтаксис языка?
От: Win2k  
Дата: 04.09.06 19:31
Оценка: 40 (2) +2 -10 :))) :)
Здравствуйте, Курилка, Вы писали:

К>Так вот — хотелось бы рассмотреть вопрос: насколько синтаксис языка определяет его удобство для использования?


Зависит от уровня интеллекта программиста. Те, кто попроще, попримитивнее, руководствуются привычками. Естественно, для них однажды выработанная привычка становится высочайшей ценностью. Те, кто поумнее, кто поближе к званию "хомо сапиенс" — способны быстро, легко и не задумываясь программировать себя. Нужно новый синтаксис научиться воспринимать? Легко, программируем себя за пять минут, и читаем с листа. Нужно вообще без синтаксиса — ещё проще. И тем, кто умный, Лисп даёт огромные преимущества. Им не надо напрягаться. Они могут воспользоваться всем, что предоставляет язык, не нарываясь на проблемы, типичные для глупых. Так что, понятно, Лисп — язык не для всех. Не надо пытаться его продвинуть в мейнстрим. В мейнстриме, в основном, люди примитивные и ограниченные.
Re[3]: Насколько важен синтаксис языка?
От: Win2k  
Дата: 04.09.06 19:32
Оценка: :)
Здравствуйте, Курилка, Вы писали:

A>>зЫ: Познакомьтес с Фортом — он может вообще всё, но захотите ли вы этим воспользоваться?


К>Может всё любой полный по тьюрингу язык — а толку? Давайте все будем писать на брейнфаке?


begin
  WriteLn('2 + 2 = ', 2 + 2);
end.


Это был код на Форте.

А ещё это был код на Лиспе. Вот так то...
Re[5]: Насколько важен синтаксис языка?
От: Vermicious Knid  
Дата: 04.09.06 20:32
Оценка: 30 (1)
Здравствуйте, VladD2, Вы писали:

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

VladD2, ты сильно на меня не сердись. Этот код можно было написать один-в-один, но без CPS. В Nemerle есть одна не очень хорошо документированная фича:
public ParseQualIdent(text : string) : list[string]
    def str = System.Text.StringBuilder();
    def parseComment(chars, name)
        match (chars)
            | '\n' :: tail \
            | '\r' :: '\n' :: tail \
            | '\r' :: tail => parse(tail, name)
            | _ => parseComment(chars, name)
    and parseMultilineComment(chars, name)   
        match (chars)
            | '*' :: '/' :: tail => parse(tail, name)
            | _ => parseMultilineComment(chars, name)
    and parse(chars, name : list[string])
        match (chars)
            | '/' :: '/' :: tail => parseComment(tail, name)
            | '/' :: '*' :: tail => parseMultilineComment(tail, name)
            | '.' :: tail => def x = str.ToString(); str.Length = 0; parse(tail, x :: name)
            | x :: tail when char.IsLetterOrDigit(x) || x == '_' => ignore(str.Append(x)); parse(tail, name)
            | _ :: tail => parse(tail, name)
            | [] => str.ToString() :: name

    // Explode преобразует строку в список символов
    parse(text.Explode(), []).Rev()
Re[6]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.09.06 23:53
Оценка:
Здравствуйте, Vermicious Knid, Вы писали:

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

VK>[ccode]
VK>and

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

P>Вопрос не мне, но выскажусь тоже, заранее прошу прощения за лексику, но "ужас нах" . Да я, плохо знаю С и его потомков. На работе используем Delphi+VBA+TSQL.


P>лучше уж как в SmallTalk:

P>условие еслиИстина: [делаем то-то].

P>Вообще говоря все дело привычки.


А ты не трепись, а возьми и на рабое исползуй вместо Дельфи+АБП+ТЭмЕкЭль какой-нить Дольфин+МайЭсКуЭль+ещеКакяТоХрень, а потом поделись мнеием. Уверен, что после Дельфи Дольфин тебя не впечатлит.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 00:06
Оценка: -1
Здравствуйте, Win2k, Вы писали:

W> А ещё это был код на Лиспе. Вот так то...


...Это был ЛСД...
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Насколько важен синтаксис языка?
От: Vermicious Knid  
Дата: 05.09.06 00:37
Оценка: 71 (6)
Здравствуйте, VladD2, Вы писали:

VK>>and

VD>Я кого хочешь, в чем хочешь прощу, если мне обяснят суть этой вещи . Я уже видел подобный код в компиляторе, но так его и не понял к своему стыду. Поясни, плиз, его смысл.
Поясняю.
// здесь функция parse недоступна
def parseComment() { parse() } // ошибка
def parse() { }
// локальные функции и значения доступны в коде следующем за их объявлением
// and как бы объединяет объявление нескольких локальных функций в одно объявление
// и они становятся доступными друг для друга
def parseComment() { parse() } // ok
and parse() { }

Черт его знает хорошо ли это или нет, но такова семантика локальных объявлений в Nemerle. Скорее всего это связано еще с тем, что повторное объявление локальной фунции или значения с тем же именем перекрывает старое.
Re[2]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 00:44
Оценка: 1 (1) +3 -1 :)
Здравствуйте, Win2k, Вы писали:

W> Зависит от уровня интеллекта программиста.


Ага.

W> Те, кто попроще, попримитивнее, руководствуются привычками.


Те кто еще проще, руководствуются разумом и необходимостью.

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


Ага.

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


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

W> Нужно новый синтаксис научиться воспринимать?


Кому? Цирковым обезьянкам? Вряд ли. Если толко дресировщикам.

W> Легко, программируем себя за пять минут, и читаем с листа. Нужно вообще без синтаксиса — ещё проще.


Да, да. Без смысла вообещ влет. "Трава рулит однозначно".

W> И тем, кто умный, Лисп даёт огромные преимущества.


Ну, да. Тем кто умный все что угодно дает огромное приемущество. Но вот фататикам... Вряд ли.

W> Им не надо напрягаться.


Ну, да. Зачем?

W> Они могут воспользоваться всем, что предоставляет язык, не нарываясь на проблемы, типичные для глупых.


Ага. Понты они все проблемы снимают.

W> Так что, понятно, Лисп — язык не для всех.


Ага. Для всех кому не надо напрягаться.

W> Не надо пытаться его продвинуть в мейнстрим.


Действительно! Зачем, если он уже "для всех"?

W> В мейнстриме, в основном, люди примитивные и ограниченные.


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

Ты бы пальчики чуть-чуть разогнул. А то твои понты уже достали.
Ничего в этой жизни не достиг, а понты как будто 'Бил Гэйсц. Хотя... последнему потны в общем-то не нужы. Он и так что-то достиг в этой жизни.

В общем, ты меня уж извини за сорказм и насмешки, но ты уже своими понтами достал. Если есть что сказать, то говори, а нет, так молчи. Нефига пытаться заработать авторитет на обсирании окружающих.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Насколько важен синтаксис языка?
От: azzx Россия  
Дата: 05.09.06 02:52
Оценка:
Здравствуйте, Win2k, Вы писали:

W>
W>begin
W>  WriteLn('2 + 2 = ', 2 + 2);
W>end.
W>


W> Это был код на Форте.


W> А ещё это был код на Лиспе. Вот так то...


Ы?

Имхо — це Паскаль. %)

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

2 2 * .
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Насколько важен синтаксис языка?
От: azzx Россия  
Дата: 05.09.06 02:58
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Нисколько не единственное, покажи мне замыкания и континьюэйшны на лого?

К>Конечно в итоге всё к машинным кодам сводится, но программист оперирует понятиями/возможностями конкретного языка, на котором пишет

Всё это встраивается. Делается умное лицо и добавляется. Особенно Мелкософт этим увлекается.

A>>зЫ: Познакомьтес с Фортом — он может вообще всё, но захотите ли вы этим воспользоваться?


К>Может всё любой полный по тьюрингу язык — а толку? Давайте все будем писать на брейнфаке?


Дык и я про то же самое говорил.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Насколько важен синтаксис языка?
От: IT Россия linq2db.com
Дата: 05.09.06 03:22
Оценка: +2 :)
Здравствуйте, VladD2, Вы писали:

VD>Кстати, неудобная конструкция. В Немерле она выглядит куда понятнее:

VD>
VD>if (условие) то-то else что-то
VD>

VD>по тому в C#/С++ я редко использовал "?:",

А мне короткого ?: ужасно не хватает
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 05.09.06 03:55
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>выше степень переиспользования кода, выше уровень абстракции, выше степень инкапсуляции.


Для этого должны быть какие-то веские причины. Приведенный тобой пример совершенно не убеждает. Ни по понятности, ни по краткости.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[5]: Насколько важен синтаксис языка?
От: Трурль  
Дата: 05.09.06 05:17
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>В науке это состояние души называется нигилисп.

а ещё NILisp
CS>В оригинале, кстати, было сказано "не хомим Lisp" или "не хоим Lisp".
Это просто опечатка, подразумевалось, очевидно, "не хамим" и "не хаем".
Re[6]: Насколько важен синтаксис языка?
От: _rasta  
Дата: 05.09.06 05:31
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>Здравствуйте, c-smile, Вы писали:


CS>>В науке это состояние души называется нигилисп.

Т>а ещё NILisp
CS>>В оригинале, кстати, было сказано "не хомим Lisp" или "не хоим Lisp".
Т>Это просто опечатка, подразумевалось, очевидно, "не хамим" и "не хаем".

или "не хотим"?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: Насколько важен синтаксис языка?
От: FR  
Дата: 05.09.06 05:48
Оценка: :))) :))) :))
Здравствуйте, _rasta, Вы писали:

_>Здравствуйте, Трурль, Вы писали:


Т>>Здравствуйте, c-smile, Вы писали:


CS>>>В науке это состояние души называется нигилисп.

Т>>а ещё NILisp
CS>>>В оригинале, кстати, было сказано "не хомим Lisp" или "не хоим Lisp".
Т>>Это просто опечатка, подразумевалось, очевидно, "не хамим" и "не хаем".

_>или "не хотим"?


И тут еще некторые удтверждают что синтаксис не важен
Re[5]: Насколько важен синтаксис языка?
От: FR  
Дата: 05.09.06 05:48
Оценка: +1
Здравствуйте, azzx, Вы писали:

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


W>>
W>>begin
W>>  WriteLn('2 + 2 = ', 2 + 2);
W>>end.
W>>


W>> Это был код на Форте.


W>> А ещё это был код на Лиспе. Вот так то...


A>Ы?


A>Имхо — це Паскаль. %)


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


A>2 2 * .


курить про метопрограммирование на форте.
Re[8]: Насколько важен синтаксис языка?
От: _rasta  
Дата: 05.09.06 05:51
Оценка: +1 :)
Здравствуйте, FR, Вы писали:

CS>>>>В оригинале, кстати, было сказано "не хомим Lisp" или "не хоим Lisp".

Т>>>Это просто опечатка, подразумевалось, очевидно, "не хамим" и "не хаем".
_>>или "не хотим"?
FR>И тут еще некторые удтверждают что синтаксис не важен

тут некоторые утверждают что есть некая мифическая легкость восприятия
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Насколько важен синтаксис языка?
От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
Дата: 05.09.06 06:18
Оценка: :))) :)
Здравствуйте, FR, Вы писали:

CS>>>>В оригинале, кстати, было сказано "не хомим Lisp" или "не хоим Lisp".

Т>>>Это просто опечатка, подразумевалось, очевидно, "не хамим" и "не хаем".

_>>или "не хотим"?


FR>И тут еще некторые удтверждают что синтаксис не важен


Надеюсь, никто не станет утверждать, что Влад написал это на Smalltalk?
--
Бесчастнов Евгений
Re[2]: Насколько важен синтаксис языка?
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 05.09.06 06:31
Оценка: 1 (1) +3
Win2k,

К>>Так вот — хотелось бы рассмотреть вопрос: насколько синтаксис языка определяет его удобство для использования?


W> [очень противоречивый пост, кое-что улыбнуло, кое-что понравилось]

...но не согласен с отношением к другим.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[6]: Насколько важен синтаксис языка?
От: Mirrorer  
Дата: 05.09.06 07:18
Оценка: -1
Здравствуйте, VladD2, Вы писали:

VD>Во всех? Ой ли. Если только через библиотеки.

Допустим через библиотеки. Важно то, что они есть, а EBNF нету. Ну или практически нету. Может быть и есть в каких-то бибилиотеках, тут я не специалист. Но в основной массе используются почему-то регулярные выражения.

VD>Ужасный, нечитаемый язык эти регексы.

Сам их терпеть ненавижу. Но ведь добавили почему-то ?

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

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

VD>А вот ты уже явно занимашся подменой темы.

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

VD> Какое отношение регексы имеют к извращениям в Смолтоковском синтаксисе?

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

VD>Ты намешаешь на то, что код на Смолтоке понятнее или кратче от этого становится?

Не сказал бы. Для меня такой код непривычен. Но как говорил один изветный персонаж
это "ЖЖЖЖ" неспроста. Если Смолтолк сделали таким, может это кому-нибудь нужно ? Может за этим скрывается какая-то идея ? Сложно об этом судить, не изучив язык. И если Смолтолк о сих пор не умер, говорит о том, что он кому-то нужен. Можно приводить пример Кобола, который тоже не умер. Но тем не менее, это значит только то, что и для него есть какая-то ниша. Естественно, я могу ошибаться.
... << RSDN@Home 1.1.4 Pink Floyd — Comfortably Numb>>
Re[6]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.09.06 07:22
Оценка: 4 (1)
Здравствуйте, VladD2, Вы писали:

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


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


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


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

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

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


Вместо пугающей "крышечки" я написал слово "return". Так вот, "возврат" выполняется не в контексте блока, а в контексте где блок определён. То есть выполнение команды "return" из анонимной функции в C#, или метода анонимного класса в Java возвращают управление в код, вызвавший эту функцию. А в ST происходит возврат из того метода, где был блок определён. Отсутсвие этой фичи делает невозможным реализацию аналога at:ifAbsent: в Java и C#.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[6]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.09.06 07:34
Оценка:
Здравствуйте, Дарней, Вы писали:

ANS>>выше степень переиспользования кода, выше уровень абстракции, выше степень инкапсуляции.


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


Тогда извини.
Если ты уверен в том, что вместо одной операции лучше постоянно применять несколько более примитивных операций, то я не буду тебя переубеждать. Тем более, что в C# всё равно нет альтернативы последнему. Но в этом случае я не понимаю, почему народ так радовался появлению foreach, using в С# если проще всё делать по старинке по кусочкам?
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[8]: Насколько важен синтаксис языка?
От: Privalov  
Дата: 05.09.06 07:34
Оценка:
Здравствуйте, Курилка, Вы писали:

ANS>>
ANS>>ADD UserInput TO RunningTotal
ANS>>        ON SIZE ERROR DISPLAY "Error - new total too large for data-item."
ANS>>        NOT ON SIZE ERROR ADD 1 TO IterCount END-ADD
ANS>>END-ADD
ANS>>

ANS>>еще б заставили цифры прописью писать и многим тут было бы было счастье

К>И платили бы ещё за каждый набитый символ


Смех смехом, а когда-то в литературе нашел утверждение, что одной из причин, по которой PL/1 не вытеснил COBOL, как раз и была "болтливость" последнего. Программистам платили, правда, не по символам, а по строкам.
Re[2]: Насколько важен синтаксис языка?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 05.09.06 08:21
Оценка: +2
Здравствуйте, Win2k, Вы писали:

W> Зависит от уровня интеллекта программиста. Те, кто попроще, попримитивнее, руководствуются привычками. Естественно, для них однажды выработанная привычка становится высочайшей ценностью. Те, кто поумнее, кто поближе к званию "хомо сапиенс" — способны быстро, легко и не задумываясь программировать себя. Нужно новый синтаксис научиться воспринимать? Легко, программируем себя за пять минут, и читаем с листа. Нужно вообще без синтаксиса — ещё проще. И тем, кто умный, Лисп даёт огромные преимущества. Им не надо напрягаться. Они могут воспользоваться всем, что предоставляет язык, не нарываясь на проблемы, типичные для глупых.


Если принять данные утверждения на веру, то у меня есть такой вопрос: как организовать рекрутерскую политику в софтверной компании, чтобы привлечь к себе на работу человек десять таких специалистов (не обязательно готовых, но способных к такой быстрой обучаемости и перепрограммированию)? А то мы вот в постоянном поиске толковых людей, но пока таких, как вы описываете не видели Причем нужно именно человек десять, лучше даже больше, а то работы много


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 05.09.06 08:22
Оценка: :)
Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


потому что это не одна операция, а две, причем слабо связанных логически. То, что в смоллтоке их можно совместить в одну конструкцию, выглядит для меня скорее минусом чем плюсом.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[3]: Насколько важен синтаксис языка?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 05.09.06 08:36
Оценка: +1
Здравствуйте, VladD2, Вы писали:

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

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

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

VD>Те кто ближе к людям — понимают, что силы лучше тратить на решение задачь стоящих перед ними.

W>> Нужно новый синтаксис научиться воспринимать?
VD>Кому? Цирковым обезьянкам? Вряд ли. Если толко дресировщикам.

Ключевое слово — "само-". Если есть дрессировщики (например, установка на "следование тенденциям"), то ни о какой "само-" речи идти не может, ибо дрессировщик тут налицо.

W>> И тем, кто умный, Лисп даёт огромные преимущества.

VD>Ну, да. Тем кто умный все что угодно дает огромное приемущество. Но вот фататикам... Вряд ли.

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

W>> Они могут воспользоваться всем, что предоставляет язык, не нарываясь на проблемы, типичные для глупых.

VD>Ага. Понты они все проблемы снимают.

Да, я это ещё со времён "возьми Янус да проверь" хорошо помню.

W>> Так что, понятно, Лисп — язык не для всех.

VD>Ага. Для всех кому не надо напрягаться.

Не, для тех кому не надо напрягаться есть майнстрим, он вынесет куда-нибудь. А Лисп не в нём, к счастью.

W>> В мейнстриме, в основном, люди примитивные и ограниченные.

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

Все тут кое-что сделали в этой жизни, раз за что-то денег получают. С характеристиками примитивности и ограниченности количество творений коррелирует слабо.

Для развлечения попробуй найти некую связь между понятием "основной поток" (mainstream) и, скажем, любимым мною высказыванием Н. Бора о бессмысленности голосования по теоретическим вопросам. Есть ещё куча подобных высказываний, которые принадлежат, естественно, отдельным личностям, а не "кодексу майнстрима".
<< Под музыку: Gregorian — Moment Of Peace >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[2]: Насколько важен синтаксис языка?
От: FR  
Дата: 05.09.06 08:45
Оценка: +1 -1
Здравствуйте, Win2k, Вы писали:

W> Зависит от уровня интеллекта программиста. Те, кто попроще, попримитивнее, руководствуются привычками. Естественно, для них однажды выработанная привычка становится высочайшей ценностью. Те, кто поумнее, кто поближе к званию "хомо сапиенс" — способны быстро, легко и не задумываясь программировать себя.


Кстати способность программировать себя мало коррелирует с интеллектуальными способностями. Есть умнейшие люди не способные на это и наооборот.
Re[4]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 05.09.06 09:06
Оценка: 1 (1) +1 :)
Здравствуйте, Геннадий Васильев, Вы писали:

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


Интересно, а тебе лично он много преимуществ дал? Или кому-то еще? Я пока не вижу кучу стартапов как у Грэхема, которые растут как грибы после дождя.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[5]: Насколько важен синтаксис языка?
От: Vermicious Knid  
Дата: 05.09.06 09:11
Оценка:
Здравствуйте, IT, Вы писали:

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

Так в чем проблема? Добавь.

Где-то проскальзывало обсуждение и разработчики вроде не были принципиально против(хотя стоит наверное переспросить еще раз). Осталось только правильно реализовать. Самый простой способ через макро-оператор, примерно таким образом:
using Nemerle.Compiler;

[assembly: Nemerle.Internal.OperatorAttribute ("Nemerle.Core", "?", false, 209, 210)]

namespace Nemerle.Core
{
    macro @?(lhs, rhs)
    {
        match(rhs)
        {
            | <[ $exprTrue : $exprFalse ]> =>
                <[ if ($lhs) $exprTrue else $exprFalse ]>
            // здесь должно быть нормальное сообщение об ошибке
            | _ => Message.FatalError("bla-bla-bla")
        }
    }
}

Этот макрос естественно прекрасно работает. Единственная проблема в том, что это будет конфликтовать с текущей реализацией синтаксиса nullable types(см. определение оператора ? в macros/core.n, typing/TyVarEnv.n — метод Bind). И этот конфликт нужно разруливать через изменение компилятора/парсера.
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
Re[9]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 11:41
Оценка: +1
Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


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


ANS>бла-бла-бла?


Можно поаккуратнее с выражениями?

ANS>ЗЫ: программирование это путь к ошибкам.



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

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


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


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


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


ANS>Я хотел бы что-бы вместо вот этого ужаса из Януса:

ANS>
ANS>if (!msgs.Tables.Contains("message"))
ANS>    return 0;
ANS>DataTable msgTable = msgs.Tables["message"];
ANS>


ANS>можно было просто написать:

ANS>
ANS>msgTable := msgs tables at: 'messages' ifAbsent: [^0].
ANS>


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

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


ANS>
ANS>msgTable := msgs tables at: 'messages' ifAbsent: [^0].
ANS>
Re[10]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 05.09.06 11:46
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Здравствуйте, Andrei N.Sobchuck, Вы писали:


ANS>>ЗЫ: программирование это путь к ошибкам.



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


Откуда ты взял множетство да ещё и неочевидных связей? Конкретно что тебя испугало?
Re[5]: Насколько важен синтаксис языка?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 05.09.06 11:50
Оценка:
Здравствуйте, VladD2, Вы писали:

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


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

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


VD>Приведи, плиз, ссылку на "кодексу майнстрима". Очень любопытно почитать.


Это фигура речи. Думаю, что ты понял, о чём я.
<< Под музыку: Best of celtic music — Track 02 >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[7]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 11:51
Оценка:
Здравствуйте, Mirrorer, Вы писали:

VD>>Во всех? Ой ли. Если только через библиотеки.

M>Допустим через библиотеки. Важно то, что они есть, а EBNF нету. Ну или практически нету.

Да, так оно и есть.

M>Но в основной массе используются почему-то регулярные выражения.


Я уже говори почему. По глупости. Еще наверно потому, что реализовать регексы проще. Алгоритм описан у Кнута и в тонне других книг. А даже распознователь EBNF — это уже более ложный продукт. Но все же главное — это глупость. МС или Сан без проблем могли бы создать нужную библиотеку.

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

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

А в чем удобство то? Может я слепой, но не вижу удобства в чтении или запоминании всех тих закорючек, звездочке, плюсиков и скобок.

VD>>А вот ты уже явно занимашся подменой темы.

M>Отнюдь. Регэксы появились как ответ на замечание Дареня о том, что "нормальный" вариант — это вариант с наименьшей неожиданностью.

Регексы — это не универсальный алгоритмический язык прграммировать, а специализированный язык описания регулярных граматик. Говоря современным языком — это DSL. Сравнивать его с универсальным языком некорректно. А вот сравнить регулярные выражения и EBNF вполне можно.

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

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


На самом деле регексы не так уж и распространены. По ним все время много вопросов. Так что они есть просто потому, что нет легко доступных других срдств.

В общем, это не нормальное положение вещей. Они дейсвительно протеворечат принкципам мэйнстрима. У нас на сайте даже есть статьи о библиотеке автор которой попытался создать замену регексам на Яве. Думаю это не с праста. Путь откровенно говря не очень верный, но посылки...

VD>> Какое отношение регексы имеют к извращениям в Смолтоковском синтаксисе?

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

Проблема в том, что Смолток не обладает какими-то радикальными преимуществами перед многими другими языками. И если применение регекспов по сравнению с ручным разбором может дать действительно радикальное приемущество, причем не только по объему кода, хотя и это бесспорно, но и по читабелности. При всей убогости и нечитаемости регекс — это декларация граматики, и понять его в сто раз проще чем аналогичный ДКА или даже ручной парсинг.

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

VD>>Ты намешаешь на то, что код на Смолтоке понятнее или кратче от этого становится?

M>Не сказал бы. Для меня такой код непривычен. Но как говорил один изветный персонаж это "ЖЖЖЖ" неспроста. Если Смолтолк сделали таким, может это кому-нибудь нужно ? Может за этим скрывается какая-то идея ? Сложно об этом судить, не изучив язык. И если Смолтолк о сих пор не умер, говорит о том, что он кому-то нужен.

А этого никто и не утверждает. Я говорю о другом. Есть языки с более привычным синтаксимом позволяющие писать код не менее краткий и выразительный. А учитывая непривычность даже более выразительный.

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


Откровенно говоря я вообще не видил ни одного человека использующего кобол и не видел ни одной строчки коммерческого или даже опенсорсного код на Коболе. Думаю, что Кобол имеет на сегодня популярность еще меньщую (значительно меньшую) чем Смолток.

Конечно это можно назвать жизнью. Но такая жизнь вряд ли порадовала бы поклонника этого языка.

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

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


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


Все относительно. По сравнению с программированием на Схеме или Хаскеле разницу между С и Пасклем не увидить в микроском. Вся разница в деталях. Библиотеки и те большее влияние оказывают.

Несколько лет назад я без проблем программировал на C++, Delphi, SQL Windows SAL и VB одновременно. А ведь это куда более разные языки нежели С и Паскаль. После изучения второго языка третий и четвертый дались очень легко. А вот столкнувшись с ФЯ, Смолтоком и Прологом я действительно поломал голову. Проблема даже не научитсья писать на этих языка, а научиться глядеть на решение задачи по другому.

FDS> Да и если сравнить Фортран с C++, различия в синтаксисе довольно значимые. Я, например, испытывал затруднения, когда читал Фортрановские программы, зная C++ и Pascal, а вот C++ читал нормально, зная только Pascal.


Фортран просто более древний язык. Но лично я особо его не зная спокойно читаю примеры на нем из книжек.

FDS>Вы сами очень любите Nemerle, а его синтаксис (только не убеждайте меня, что он похож на C#, сам знаю) меня раздражает . Так что принципиально нет разницы между вами, говорящими что Nemerle лучше C# и людьми, говорящими, что Lisp лучше C.


"Раздражает" и "срывает крышу/полностью непонятен" — это, как говорят в Одессе, две большие разницы. Есть люди которых раздражает VB, есть те кого раздражает С или Паскаль. Например, не раз слышал заявления, что begin/end это ужасно, или что ужасны фигурные скобочки.

Такое раздражение проходит через 10 минут реальной работы. Особенно когда язык предоставляет значительно более мощьные возможности.

Думаю, что поклонники Смолтока стали таковыми именно потому, что им понравились некие возможности которых небыло в С++ или скажем Дельфи. Для них преодоление своих привычек и ломка мозга показалась оправданной. Не спорю, что по сравнению с С++ это действительно может быть оправданным. Но вот по сравнению с другими языками это уже не вполне оправдано. Перейдя с того же C#-а на Смолток ты не получишь каких-то радикальных возможностей. С Лиспом несколько по другому. Тут действительно возможности отндью не иллюзорны, но вот ломка сознания уже принципиальная.

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

ANS>Я хотел бы что-бы вместо вот этого ужаса из Януса:

ANS>
ANS>if (!msgs.Tables.Contains("message"))
ANS>    return 0;
ANS>DataTable msgTable = msgs.Tables["message"];
ANS>


ANS>можно было просто написать:

ANS>
ANS>msgTable := msgs tables at: 'messages' ifAbsent: [^0].
ANS>


Откровенно говоря вигрыш в количестве элементов тут небольшой, а вот читаемость кода явно уменьшается. Ведь он становится не структурным. Твой ^0 по последствиям мало отличается от goto.

Я бы как раз предпочел бы первый вариант.

Ну, и надо понимать, что Tables это коллекция которая может просто не иметь метода ifAbsent.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 11:52
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

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


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


Ты не устаешь меня радовать. Я то думал, имя Грэхема тебе знакомо. А ты оказывается просто проигнорировал его, как и любой другой незнакомый тебе термин
ответ очень прост — большие компании консервативны и неповоротливы, они не могут извлечь пользу из новых технологий. Но стартапы этим не страдают, и они давно бы воспользовались любой технологией, которая может дать им преимущество. Хотя бы малейшее.
Поскольку я не вижу волны таких стартапов, построенных на "элитарных языках", я делаю простой вывод — все их преимущества высосаны из пальца.


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

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


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


Как минимум твой код упадёт от NullReferenceException
Re[5]: Насколько важен синтаксис языка?
От: Programmierer AG  
Дата: 05.09.06 11:55
Оценка: +3
VladD2 wrote:
>
> Ага. Вот Win2k, например, пальцы от души погнул. Интересно, это новая реинкарнация Редуктора,
М.б. хватит уже поминать всуе имя Редуктора? Множество людей на этом
форуме скажут (и говорили уже), что посты Редуктора были для них крайне
познавательны.
Posted via RSDN NNTP Server 2.0
Re[11]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 12:00
Оценка:
Здравствуйте, Курилка, Вы писали:

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


FDS>>Здравствуйте, Andrei N.Sobchuck, Вы писали:


ANS>>>ЗЫ: программирование это путь к ошибкам.



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


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


Меня испугало то, что можно выйти откуда угодно. Это значит, что вызвав некоторую функцию я не буду уверен, что она вернёт управление
Re[8]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 05.09.06 12:01
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А в чем удобство то? Может я слепой, но не вижу удобства в чтении или запоминании всех тих закорючек, звездочке, плюсиков и скобок.


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

VD>В общем, это не нормальное положение вещей. Они дейсвительно протеворечат принкципам мэйнстрима. У нас на сайте даже есть статьи о библиотеке автор которой попытался создать замену регексам на Яве. Думаю это не с праста. Путь откровенно говря не очень верный, но посылки...


а ты не помнишь, где это было?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[4]: Насколько важен синтаксис языка?
От: Klapaucius  
Дата: 05.09.06 12:02
Оценка:
Здравствуйте, Win2k, Вы писали:

W>
W>begin
W>  WriteLn('2 + 2 = ', 2 + 2);
W>end.
W>


W> Это был код на Форте.


W> А ещё это был код на Лиспе. Вот так то...


По моему скромному разумению, это фокусы, на практике большого значения не имеющие.

Сделайте замыкание на этом фортопаскале. Не очень жестокая просьба, нет?
Сделайте pattern-matching на форте.

А имитация синтаксиса одного слабовыразительного языка с помощью другого, который, правда, может быть несколько выразительнее меня не впечатляет.
... << RSDN@Home 1.2.0 alpha rev. 655>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[2]: Насколько важен синтаксис языка?
От: Klapaucius  
Дата: 05.09.06 12:02
Оценка: 41 (3) +2 :)
Здравствуйте, Win2k, Вы писали:

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


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

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


Мы тут все, по факту, Homo Sapiens Sapiens. Вы про кого сейчас говорите? Про Homo Habilis чтоли? Или про Homo Erectus? Кто там из них программировал себя? Я-то по вымершим человекообразным не спец, без пояснения мне это не понятно. Но этот экскурс в палеонтологию занимателен, однако не относится к делу. Человек разумный тем от животного и отличается, что имеет возможности и склонность приспосабливать среду под себя, а не себя под среду. Программировать себя "не задумываясь" он скорее всего не станет. Он сначала подумает о том, какую пользу он извлечет из такого программирования. Стоит ли оно того? Есть ли более рациональные пути?

W>Нужно новый синтаксис научиться воспринимать? Легко, программируем себя за пять минут, и читаем с листа.


Ну и дела. Не удивительно, что эти "кто поближе к званию "хомо сапиенс"" повымирали. Они, наверное, и лист вверх ногами держали, чтобы не расслаблятся. Лично я сначала подумал бы, зачем все это нужно. Вообще, я склонен думать, что интеллектуальный вызов ради вызова это не слишком хорошая практика. Хотя о чем я? Синтаксис вообще интеллектуальным вызовом не является. Думать надо над интересными проблемами, а не загружать мозг головоломками. Если есть потребность — почему бы и нет? Я вот, например, в Ч?Г?К? играю. А работа — место для головоломок не совсем подходящее. Вобщем, лично мне кажется, что способности по сборке кубика Рубика и решению дифуров равнополезными считать не стоит.

W>Нужно вообще без синтаксиса — ещё проще.


Внушает. Вот только все что на листе буквами написано имеет синтаксис — по определению.

W>И тем, кто умный, Лисп даёт огромные преимущества.


Соглашусь. Вторая клецка разума в этом бульоне человеконенависничества. Хотя смотря перед чем и перед кем.
Вот только обусловлены ли эти преимущества лиспа какой нибудь из разновидностей его синтаксиса? Имеет ли по-вашему значение синтаксис в таком случае или нет? Ваша позиция становится не очень понятной.

W>Им не надо напрягаться.


Крутые чуваки, что тут скажешь?

W>Они могут воспользоваться всем, что предоставляет язык, не нарываясь на проблемы, типичные для глупых.


Жизнь сложная штука. Дело-то как раз в том, что даже очень умный человек может нарваться на очень глупую проблему. Она, правда, не окажется для него тупиком, как для глупого, но неприятный осадок все равно останется. Впрочем, возможно, это проблема моего окружения. В Гиперурании (или откуда Вы там пишите) такого, конечно, не случается.

W>Так что, понятно, Лисп — язык не для всех.


Верно. А Волга впадает в Каспийское море, которое на самом деле не море. Про лисп — очень ценное замечание. Я еще много знаю языков, которые не для всех. Вот языков для всех — не знаю ни одного.

W>Не надо пытаться его продвинуть в мейнстрим. В мейнстриме, в основном, люди примитивные и ограниченные.


Интересное мнение.
... << RSDN@Home 1.2.0 alpha rev. 655>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[9]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 05.09.06 12:07
Оценка: -1
Здравствуйте, Дарней, Вы писали:

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


ах да, надо дополнить. лучше будет так:
... все их преимущества высосаны из пальца, или с лихвой перекрываются недостатками.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[12]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 05.09.06 12:08
Оценка:
Здравствуйте, FDSC, Вы писали:

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


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


FDS>>>Здравствуйте, Andrei N.Sobchuck, Вы писали:


ANS>>>>ЗЫ: программирование это путь к ошибкам.



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


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


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


Имхо ты неверно понял идею — возврат идёт в итератор по сути, который вернёт управление в твой блок.
Re[5]: Насколько важен синтаксис языка?
От: Kisloid Мухосранск  
Дата: 05.09.06 12:10
Оценка:
Здравствуйте, VladD2, Вы писали:

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


Есть мнение, и не только моё, что это реинкарнация товарища Kolhoz'а. А лисп тут скорее всего не при чем. Просто наверное кое кого, не будем показывать пальцем в детстве сильно обижали или что-то в этом роде.
((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))
Re[6]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 12:10
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

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


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


Задумывался. Когда ты к нему прибегал.

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

VD>>Приведи, плиз, ссылку на "кодексу майнстрима". Очень любопытно почитать.


ГВ>Это фигура речи. Думаю, что ты понял, о чём я.


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

PA>М.б. хватит уже поминать всуе имя Редуктора?


Надо, надо.

PA>Множество людей на этом

PA>форуме скажут (и говорили уже), что посты Редуктора были для них крайне
PA>познавательны.

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

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


Это проблема реализации. В Lex черт знает когда можно было создать именованные регексы и использовать их внутри других.

Д> Но даже с ним, регэксы не очень легки для чтения.


+1

Д>а ты не помнишь, где это было?


В разделе "Статиь"
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Насколько важен синтаксис языка?
От: Sinclair Россия https://github.com/evilguest/
Дата: 05.09.06 12:13
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>PS Кстати, этот вариант

ANS>
ANS>value := aDictionary at: aKey ifAbsent: [...обрабатываем ситуацию...].
ANS>

ANS>легко получается из этого:
ANS>
ANS>V value = aMap.get(key);
ANS>if (value == null) {...обрабатываем ситуацию...}
ANS>

ANS>В начале нужно объеденить первую и вторую строчку, потому что эти две физические конструкции объеденяют одну логическую. И так, убираем точку-с-запятой и переносим "if" на верх. Затем вместо шифровки "value == null" пишем простое и понятное "Absent". И, вуаля...
Ну, вообще-то правильно — так:
try
{
  value = aMap[key];
} 
catch(KeyNotFoundException knfe)
{
//...обрабатываем ситуацию...
}

1. Джава sux: нам не нужен никакой гет, вместо этого используется синтаксически более прозрачный индексер
2. Джава sux: а если в словаре хранятся значения примитивного типа, то мы что будем возвращать? А что делать, если мы хотим намеренно сохранить null?
3. Смоллток sux: это что, нам надо в каждом методе предоставлять параметры для разных исходов? А если я этого не сделал?
4. Смоллток sux: а теперь давайте сравним значения из двух словарей по ключу, при этом отсутствующие в любом из словарей считаем одной и той же ситуацией:
foreach(string key in externalKeys)
    try 
    {
        if (aMapLeft[key] != aMapRight[key]) mismatches++;
    } 
    catch(KeyNotFoundException knfe)
    {
        mismatches++;
    }

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

Я не против continuation, но реализация на них ыполне прямолинейной логики обработки ошибок — weird.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: Насколько важен синтаксис языка?
От: pavel74  
Дата: 05.09.06 12:18
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А ты не трепись, а возьми и на рабое исползуй вместо Дельфи+АБП+ТЭмЕкЭль какой-нить Дольфин+МайЭсКуЭль+ещеКакяТоХрень, а потом поделись мнеием. Уверен, что после Дельфи Дольфин тебя не впечатлит.


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

Насчет Дольфина ты ошибся. От знакомства с этой средой и смолтоком у меня положительных впечатлений просто масса, хотя есть конечно же там и свои проблемы. Что касается смолтоковским сред в целом то как у любого другого инструмента есть плюсы и минусы, главное их адекватно оценивать. Я для себя оценку сделал. Что-то кому-то доказывать до хрипоты у меня нет ни времени ни самое главное желания.


PS А ты акуратнее выбирай выражения.
Re[6]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 12:20
Оценка:
Здравствуйте, Kisloid, Вы писали:

K>Есть мнение, и не только моё, что это реинкарнация товарища Kolhoz'а. А лисп тут скорее всего не при чем.


А, да. Эти товарищи похожи.

K>Просто наверное кое кого, не будем показывать пальцем в детстве сильно обижали или что-то в этом роде.


Да, уж. Забавно, что если бы не любовь к смешиванию с дерьмом, то их (егоЭ) бы было интересно послушать.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Насколько важен синтаксис языка?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 05.09.06 12:25
Оценка: +2
Здравствуйте, Дарней, Вы писали:

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


37 signals
Использовали тогда еще не очень широкоизвестный язык Ruby. И попутно сделали тогда еще мало кому известный RubyOnRails. Причем по высказываниям DHH (разработчика RoR) явно следует, что Ruby и RoR были для них конкурентными преимуществами.

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


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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[8]: Насколько важен синтаксис языка?
От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
Дата: 05.09.06 12:31
Оценка: 6 (1)
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Andrei N.Sobchuck, Вы писали:


ANS>>Я хотел бы что-бы вместо вот этого ужаса из Януса:

ANS>>
ANS>>if (!msgs.Tables.Contains("message"))
ANS>>    return 0;
ANS>>DataTable msgTable = msgs.Tables["message"];
ANS>>


ANS>>можно было просто написать:

ANS>>
ANS>>msgTable := msgs tables at: 'messages' ifAbsent: [^0].
ANS>>


VD>Откровенно говоря вигрыш в количестве элементов тут небольшой, а вот читаемость кода явно уменьшается. Ведь он становится не структурным. Твой ^0 по последствиям мало отличается от goto.


VD>Я бы как раз предпочел бы первый вариант.


VD>Ну, и надо понимать, что Tables это коллекция которая может просто не иметь метода ifAbsent.


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

По пунктам: "^0" в Smalltalk ровно настолько же близок к goto, как "return 0" в C# — потому что это в точности то же самое.

Далее, в приведённом примере на 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[12]: Насколько важен синтаксис языка?
От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
Дата: 05.09.06 12:32
Оценка:
Здравствуйте, FDSC, Вы писали:

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


Гхм... А как ты относишься к exception-ам?
--
Бесчастнов Евгений
Re[8]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 12:33
Оценка:
Здравствуйте, VladD2, Вы писали:

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


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


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


VD>Все относительно. По сравнению с программированием на Схеме или Хаскеле разницу между С и Пасклем не увидить в микроском. Вся разница в деталях. Библиотеки и те большее влияние оказывают.


Хм-м-м. Видать у нас совершенно разное мышление. Для меня библиотеки — это фигня. Главное запомнить, что там есть определённые возможности и всё. А язык влияет на представление алгоритма в коде и после того, как я долго программирую на C++ мои программы на Delphi выглядят несколько неподельфийски.

VD>Несколько лет назад я без проблем программировал на C++, Delphi, SQL Windows SAL и VB одновременно. А ведь это куда более разные языки нежели С и Паскаль. После изучения второго языка третий и четвертый дались очень легко. А вот столкнувшись с ФЯ, Смолтоком и Прологом я действительно поломал голову. Проблема даже не научитсья писать на этих языка, а научиться глядеть на решение задачи по другому.


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

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

FDS>> Да и если сравнить Фортран с C++, различия в синтаксисе довольно значимые. Я, например, испытывал затруднения, когда читал Фортрановские программы, зная C++ и Pascal, а вот C++ читал нормально, зная только Pascal.


VD>Фортран просто более древний язык. Но лично я особо его не зная спокойно читаю примеры на нем из книжек.


И у вас небыло переходного периода, когда вы не очень его понимали? Я то же стал лучше его понимать, после прочтения 4 или 5 книг, где он использовался как примеры. Но всё равно не очень. А PL/1 вы то же без труда понимаете?

FDS>>Вы сами очень любите Nemerle, а его синтаксис (только не убеждайте меня, что он похож на C#, сам знаю) меня раздражает . Так что принципиально нет разницы между вами, говорящими что Nemerle лучше C# и людьми, говорящими, что Lisp лучше C.


VD>"Раздражает" и "срывает крышу/полностью непонятен" — это, как говорят в Одессе, две большие разницы. Есть люди которых раздражает VB, есть те кого раздражает С или Паскаль. Например, не раз слышал заявления, что begin/end это ужасно, или что ужасны фигурные скобочки.

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

Собственно, я и хотел сказать, что раздражает и срывает крышу — это количественные показатели сложности, принципиально неразличные. Человек привыкает ко всему, вопрос только во времени (если укрепить "крышу", то её может унести если только вместе с домом....).


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


VD>Думаю, что поклонники Смолтока стали таковыми именно потому, что им понравились некие возможности которых небыло в С++ или скажем Дельфи. Для них преодоление своих привычек и ломка мозга показалась оправданной. Не спорю, что по сравнению с С++ это действительно может быть оправданным. Но вот по сравнению с другими языками это уже не вполне оправдано. Перейдя с того же C#-а на Смолток ты не получишь каких-то радикальных возможностей. С Лиспом несколько по другому. Тут действительно возможности отндью не иллюзорны, но вот ломка сознания уже принципиальная.


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

VD>Так что Немерле — это как раз тот язык который позволяет не ломая сознания и не отказываясь от всего того к чему привык воспользоваться всеми теми вкусностями которые доступны во всех "непривычных" языках. Потому он мне и нравится.


А вот меня он ломает и очень сильно. Так что я прав
Re[7]: Насколько важен синтаксис языка?
От: Programmierer AG  
Дата: 05.09.06 12:33
Оценка: 18 (1) +5 :)))
VladD2 wrote:

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


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

А насчет отсутствия познавательного — это или мегазнания, или нежелание
видеть очевидное. Вот парочка примеров:
http://rsdn.ru/Forum/Message.aspx?mid=1515192&amp;only=1
Автор: reductor
Дата: 01.12.05

http://rsdn.ru/Forum/Message.aspx?mid=1529433&amp;only=1
Автор: reductor
Дата: 09.12.05
Posted via RSDN NNTP Server 2.0
Re[10]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 05.09.06 12:35
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>37 signals


в первый раз вообще слышу

E>Использовали тогда еще не очень широкоизвестный язык Ruby. И попутно сделали тогда еще мало кому известный RubyOnRails. Причем по высказываниям DHH (разработчика RoR) явно следует, что Ruby и RoR были для них конкурентными преимуществами.


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

E>Могу ошибаться, но вообще очень мало стартапов, построенных вокруг какой-то идеи, выживают. Так что "волны" стартапов не может быть в принципе.


выживает вообще очень мало стартапов, это факт. Но выживают только те, за которыми стоит какая-то идея. Так что если возникнет мощная, но невостребованная мэйнстримом идея — можешь не сомневаться, волна будет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[13]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 12:36
Оценка:
Здравствуйте, Курилка, Вы писали:

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


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


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


FDS>>>>Здравствуйте, Andrei N.Sobchuck, Вы писали:


ANS>>>>>ЗЫ: программирование это путь к ошибкам.



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


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


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


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


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


Тогда не понял, в чём разница
Re[13]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 12:36
Оценка:
Здравствуйте, Eugene Beschastnov, Вы писали:

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


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


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


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

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


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


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


К>Как минимум твой код упадёт от NullReferenceException


С какой стати? Я могу сделать так, что msgs.Tables["message"] вернёт пустой объект, который будет в методе Asbent возвращать флаг пустого сотояния
Мы же говорим про языки, а данная возможность языку никак не противоречит.

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


Так устроит?
Re[10]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.09.06 12:42
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Если таких операций много — может быть. Но это можно сделать и не корежа страшным образом синтаксис.


Хочу заметить, что синтаксис в ST единообразный и нигде не корёжится
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[11]: Насколько важен синтаксис языка?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 05.09.06 12:42
Оценка: +3
Здравствуйте, Дарней, Вы писали:

E>>37 signals


Д>в первый раз вообще слышу


С таким же успехом ты мог прозевать еще десяток-другой успешных стартапов.

E>>Могу ошибаться, но вообще очень мало стартапов, построенных вокруг какой-то идеи, выживают. Так что "волны" стартапов не может быть в принципе.


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


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

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



SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[8]: Насколько важен синтаксис языка?
От: Mirrorer  
Дата: 05.09.06 12:43
Оценка: -1
Здравствуйте, VladD2, Вы писали:

VD>А в чем удобство то? Может я слепой, но не вижу удобства в чтении или запоминании всех тих закорючек, звездочке, плюсиков и скобок.

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

VD>Регексы — специализированный язык описания регулярных граматик. Говоря современным языком — это DSL. Сравнивать его с универсальным языком некорректно.

Я сравнивал синтаксис регэкспов и синтаксис Smalltalk. Может это действительно некорректно.
VD>А вот сравнить регулярные выражения и EBNF вполне можно.
Ознакомился с EBNF. Здесь

EBNF: What is it, and why do we need it?
In DL I had to use recursion (ie: DL can produce new DLs) to express the fact that there can be any number of Ds. This is a bit awkward and makes the BNF harder to read. Extended BNF (EBNF, of course) solves this problem by adding three operators:

? : which means that the symbol (or group of symbols in parenthesis) to the left of the operator is optional (it can appear zero or one times)
* : which means that something can be repeated any number of times (and possibly be skipped altogether)
+ : which means that something can appear one or more times
An EBNF sample grammar
So in extended BNF the above grammar can be written as:

S := '-'? D+ ('.' D+)?

D := '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'

which is rather nicer.

Может оно конечно и nicer, но пахнет регэксами..

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

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

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

Именно парадоксальность ситуации с регэксами заставляет меня задуматься о том, что непривычный синтаксис, не является по большому счету препятствием. Я не считаю его хуже или лучше. Просто он другой, и его не принял мейнстрим. Но регэксы принял
Вот этого я не могу понять...
... << RSDN@Home 1.1.4 PINK FLOYD — Shine On You Crazy Diamond (Part Two)>>
Re[14]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 05.09.06 12:45
Оценка:
Здравствуйте, FDSC, Вы писали:

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


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


FDS>

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


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


Смотри здесь
Автор: Eugene Beschastnov
Дата: 05.09.06
Re[11]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 05.09.06 12:46
Оценка: :)
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Хочу заметить, что синтаксис в ST единообразный и нигде не корёжится


что синтаксис единообразный — вот это и плохо. Я всё-таки привык, что он сильно различается у разных конструкций и помогает выделять структуру программы. Да и не только я к этому привык, судя по всему
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[12]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 05.09.06 12:49
Оценка:
Здравствуйте, eao197, Вы писали:

E>С таким же успехом ты мог прозевать еще десяток-другой успешных стартапов.


Если стартап по настоящему успешен, то прозевать его просто не дадут. Мы ведь не в каменном веке все-таки, кругом сплошное информационное пространство
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[13]: Насколько важен синтаксис языка?
От: Курилка Россия http://kirya.narod.ru/
Дата: 05.09.06 12:51
Оценка: +2
Здравствуйте, Дарней, Вы писали:

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


E>>С таким же успехом ты мог прозевать еще десяток-другой успешных стартапов.


Д>Если стартап по настоящему успешен, то прозевать его просто не дадут. Мы ведь не в каменном веке все-таки, кругом сплошное информационное пространство


Что-то видимо это пространство тебя мимо обошло коли ты такой нашумевший стартап не слышал
Re[12]: Насколько важен синтаксис языка?
От: Дарней Россия  
Дата: 05.09.06 12:52
Оценка: -2
Здравствуйте, eao197, Вы писали:

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

E>

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


проблема в том, что эту волну создаешь ты в одиночку. Реально успешных проектов на нем я не вижу.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
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. изменение семантики оператора [].


Да, изменение, дак тогда не синтаксис у индексаторов "убогий", а семантика им этого не позволяет. Синтаксис всё то же, что и методам позволяет делать. Я к этому и придрался
Re[12]: Насколько важен синтаксис языка?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 05.09.06 14:08
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Всё равно, если удобство есть, то "майнстрим" всё примет, как принял, например, ALGOL-60 или FORTRAN, а затем и C++ и Java


Дык в то-то и загвоздка, что мейнстрим не выбирает самые удачные решения, а всего-лишь достаточно хорошие
Автор: eao197
Дата: 03.07.06
. Уж не знаю, как там дела обстояли с Algol-ом и Fortran-ом, но вот C++ пример весьма показательный (например, если сравнивать с Eiffel, который появился всего парой лет позже и является языком того же класса).


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

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

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

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

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


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



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

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

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


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


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


FDS>
ANS>>
ANS>>msgTable := msgs tables at: 'messages' ifAbsent: [^0].
ANS>>
FDS>


Разница в том, что 1) блок можно передавать в качестве аргумента в функцию 2) существуют блоки с параметрами (синтаксис у них такой — [ :param1 :param2 | тело блока ]).
Всё это вместе позволяет создавать методы более высокого уровня абстракции (а значит, уменьшает дублирование кода). "at:ifAbsent:" — пример как раз такого метода более высокого уровня абстракции. Он выполняет набор действий "взять из коллекции объект по указанному ключу, а если он отсутствует — выполнить указанные действия".
--
Бесчастнов Евгений
Re[12]: Насколько важен синтаксис языка?
От: Mirrorer  
Дата: 05.09.06 14:23
Оценка: +1
Здравствуйте, FDSC, Вы писали:


FDS>Не понял умора?

FDS>Всё равно, если удобство есть, то "майнстрим" всё примет, как принял, например, ALGOL-60 или FORTRAN, а затем и C++ и Java

Вопрос во времени. Когда появилась lambda в Лиспе, а когда в мейнстриме ?
... << RSDN@Home 1.1.4 PINK FLOYD — Shine On You Crazy Diamond (Part One)>>
Re[13]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 14:34
Оценка: +1 -2 :)
Здравствуйте, eao197, Вы писали:

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


FDS>>Всё равно, если удобство есть, то "майнстрим" всё примет, как принял, например, ALGOL-60 или FORTRAN, а затем и C++ и Java


E>Дык в то-то и загвоздка, что мейнстрим не выбирает самые удачные решения, а всего-лишь достаточно хорошие
Автор: eao197
Дата: 03.07.06
. Уж не знаю, как там дела обстояли с Algol-ом и Fortran-ом, но вот C++ пример весьма показательный (например, если сравнивать с Eiffel, который появился всего парой лет позже и является языком того же класса).


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

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


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


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



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

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

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


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


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


FDS>>
ANS>>>
ANS>>>msgTable := msgs tables at: 'messages' ifAbsent: [^0].
ANS>>>
FDS>>


EB>Разница в том, что 1) блок можно передавать в качестве аргумента в функцию 2) существуют блоки с параметрами (синтаксис у них такой — [ :param1 :param2 | тело блока ]).

EB>Всё это вместе позволяет создавать методы более высокого уровня абстракции (а значит, уменьшает дублирование кода). "at:ifAbsent:" — пример как раз такого метода более высокого уровня абстракции. Он выполняет набор действий "взять из коллекции объект по указанному ключу, а если он отсутствует — выполнить указанные действия".

В таком случае, VladD2 полностью прав, когда говорит, что это по типу goto. Причём это небезопасное использование goto.
Re[6]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 14:36
Оценка:
Здравствуйте, pavel74, Вы писали:

P>у любого другого инструмента есть плюсы и минусы, главное их адекватно оценивать.


От. Золотые слова. А то вот я в всое время наслушавшись хвалебных песен о Долфине скачал его шестую версию и... был сильно разочарован. Возможно если бы мне не сказали, что это мега-круто, то я бы и не был так разочарован. Но когда тебе говорят о мега-крутости, а на поверку в среде нет даже комплит-ворда, то чувствуешь себя обманутым.

Что до моих слов о "трепе"... Извини за выражение, но по сути подобрать другое слово было тяжело. Разговоры о том, как что-то будет круто на практике — это одно. А вот использование чего-то на практике — это дургое. В условиях реальной работы многие восторженные мысли уходят, а проблемы выявляются.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.09.06 14:39
Оценка:
Здравствуйте, FDSC, Вы писали:

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


Ты пример приведи, того что тебя пугает. И станет сразу видно правильно ты понимаеш или нет
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[7]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.09.06 14:45
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>От. Золотые слова. А то вот я в всое время наслушавшись хвалебных песен о Долфине скачал его шестую версию и... был сильно разочарован. Возможно если бы мне не сказали, что это мега-круто, то я бы и не был так разочарован. Но когда тебе говорят о мега-крутости, а на поверку в среде нет даже комплит-ворда, то чувствуешь себя обманутым.


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

VD>Что до моих слов о "трепе"... Извини за выражение, но по сути подобрать другое слово было тяжело. Разговоры о том, как что-то будет круто на практике — это одно. А вот использование чего-то на практике — это дургое. В условиях реальной работы многие восторженные мысли уходят, а проблемы выявляются.


Именно. Но плюсов всё равно больше.

ЗЫ. И комплит-ворд в Дольфине есть, и броузер кода удобный, и рефакторинг работает, и на ST там всё написано кроме ВМ и виндовых контролов.

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

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


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


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



Метод1(ЕслиОУжас)
...
msgTable := msgs tables at: 'messages' ifAbsent: ЕслиОУжас;


----

ЕслиОУжас(ЕслиБлин)

....

msgTable := msgs tables at: 'users' ifAbsent: ЕслиБлин;
....
^что-то

----------

ЕслиБли()

Метод1(ЕслиОУжас)


В конечном итоге вообще не понятно, что кто вернёт, откуда и куда и не получиться ли зацикливания.
Re[9]: Насколько важен синтаксис языка?
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 05.09.06 14:51
Оценка: 3 (1)
Здравствуйте, Дарней, Вы писали:

VD>>В общем, это не нормальное положение вещей. Они дейсвительно протеворечат принкципам мэйнстрима. У нас на сайте даже есть статьи о библиотеке автор которой попытался создать замену регексам на Яве. Думаю это не с праста. Путь откровенно говря не очень верный, но посылки...


Д>а ты не помнишь, где это было?


http://rsdn.ru/?article/?678
Автор(ы): Alexander Babaev
Дата: 22.05.2005
В статье предлагается Pure Java API для произвольной обработки строк. При этом показывается, как пользоваться такого рода библиотекой на конкретном примере разработанной автором библиотеки. Также сравнивается подход автора с классическим.

... << RSDN@Home 1.2.0 alpha rev. 654>>
Re[22]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.09.06 14:55
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>В конечном итоге вообще не понятно, что кто вернёт, откуда и куда и не получиться ли зацикливания.


copilation failed. То есть не понял в (псевдо-)коде ничего.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[16]: Насколько важен синтаксис языка?
От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
Дата: 05.09.06 14:58
Оценка: 10 (1)
Здравствуйте, FDSC, Вы писали:

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


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


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


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


FDS>Тут нет никаких противоречий. Exception возвращает управление вызывающей функции, а не к чёрту на кулички.

Ну, exception-ы бывают и unchecked.

FDS>А если функция просто куда-то не туда передаст управление, ищи её потом свищи.

По-моему, с твоей стороны есть некоторое недопонимание. Если ты просто вызываешь какую-то функцию, то тебе управление тебе нормально вернётся (разумеется, если не было exception-а). А вот если ты выполняешь блок (не передаёшь его в качестве параметра, а именно выполняешь там, куда передал) — тогда да, управление может не вернуться (потому что, как я уже говорил, блок исполняется в том контексте, где было создан, а не где был запущен на выполнение). Запускается на выполнение блок вызовом у него метода "value" (в случае, если блок без параметров) или "value:", "value:value:", "value:value:value:" и т.д. (если блок требует аргументов).

В качестве примера опишу два метода, один из которых вызывает другой с блоком в качестве параметра (всё, что в двойных кавычках — комментарии):
startingMethod  "Здесь мы описываем создаваемый метод - указываем его имя и параметры. 
                 В данном случае имя метода - startingMethod, а параметров у него нету"

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

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

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

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

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

    ^blockResult  "Возвращаем blockResult"
--
Бесчастнов Евгений
Re[9]: Насколько важен синтаксис языка?
От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
Дата: 05.09.06 15:03
Оценка:
Здравствуйте, Eugene Beschastnov, Вы писали:

Хех, немножко накосячил
EB>... Метод "at:ifAbsent:" (который, кстати, является стандартным и имеется у всех типов коллекций) ...

Разумеется, "у всех типов коллекций, для которых он имеет смысл" . Т.е. если из коллекции нельзя достать объект по ключу или по индексу, то и метода такого у этой коллекции нету.
--
Бесчастнов Евгений
Re[23]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 15:29
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


FDS>>В конечном итоге вообще не понятно, что кто вернёт, откуда и куда и не получиться ли зацикливания.


ANS>copilation failed. То есть не понял в (псевдо-)коде ничего.


Ну, я хотел сказать, что если мы объявили делегат, и return приведёт к выходу не из этой функции, а из какой-то другой, то мы можем сделать так, что функция получит выход сама на себя. Ну или другие последствия, как при передачи простой метки в функцию для скачка.
Re[3]: Насколько важен синтаксис языка?
От: vvotan Россия  
Дата: 05.09.06 15:35
Оценка: +1 :)))
Здравствуйте, Mirrorer, Вы писали:


M>Английский

M>I am teacher.
M>Я есть учитель.

На самом деле "I am a teacher", то есть "Я есть экземпляр класса "учитель" "
--
Sergey Chadov

... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[17]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 15:53
Оценка:
Здравствуйте, Eugene Beschastnov, Вы писали:

EB>В качестве примера опишу два метода, один из которых вызывает другой с блоком в качестве параметра (всё, что в двойных кавычках — комментарии):

EB>
EB>startingMethod  "Здесь мы описываем создаваемый метод - указываем его имя и параметры. 
EB>                 В данном случае имя метода - startingMethod, а параметров у него нету"

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

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

EB>    self methodThatWorksWithBlock: aBlock.
 "Здесь мы вызываем у самого себя метод methodThatWorksWithBlock: с параметром aBlock"
EB>
EB>methodThatWorksWithBlock: aBlock  
"Здесь мы описываем создаваемый метод - указываем его имя и параметры. 
EB>  В данном случае имя метода - methodThatWorksWithBlock: , и у метода есть один параметр - aBlock"

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

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

EB>    ^blockResult  "Возвращаем blockResult"
EB>


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

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

Пожалуй всё. Мне даже понравилась такая возможность, её иногда нехватает.
Re[4]: Насколько важен синтаксис языка?
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 16:00
Оценка: :)))
Здравствуйте, vvotan, Вы писали:

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



M>>Английский

M>>I am teacher.
M>>Я есть учитель.

V>На самом деле "I am a teacher", то есть


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

FDS>Здравствуйте, Andrei N.Sobchuck, Вы писали:


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


FDS>>>В конечном итоге вообще не понятно, что кто вернёт, откуда и куда и не получиться ли зацикливания.


ANS>>copilation failed. То есть не понял в (псевдо-)коде ничего.


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


Где ты метку взял? Тебе везде goto мерещится?
Блоки смолтолковские и рубивские — это лямбды по сути, никаким образом не метки, и лямбды возвращают управление в том месте, где они были вызваны.
Re[9]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 17:11
Оценка: +2
Здравствуйте, Mirrorer, Вы писали:

M>На безрыбье как говорится..


Вот, вот. И удобство тут не причем.

M>Может оно конечно и nicer, но пахнет регэксами..


Это не лучший вариант. EBDF бывает разным. Но даже так это пахнет только если что-то простое. На сложном ты сразу увидишь разницу.

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


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

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


А не заставляет задуматься тот факт, что после очередной порции рекламы Смолтока сразу же появляются впоросы вроде этого
Автор: quadrochups
Дата: 29.08.06
?

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

M>Вот этого я не могу понять...

Скажем так. Принял плохо и только потому что нет альтернативы. Уверен, что если бы альтернатива была бы и была бы понятнее, то регексы пошли бы в помойку.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
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 попадает


Тогда в чём ошибка в том примере? Можешь в той ветке объяснить подробнее (а то между двумя ветками неудобно)?
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.
    Re[2]: Система исчисления
    От: FDSC Россия consp11.github.io блог
    Дата: 05.09.06 19:10
    Оценка:
    Здравствуйте, minorlogic, Вы писали:

    M>Известно , что счет удобнее вести в 12 рмчной системе исчесления , но пользуемся мы 10 ричной ..


    Это откуда это известно. Мне вот говорили, что лучшая система исчисления — с основанием с числом e , так и не знаю почему
    Re[3]: Система исчисления
    От: minorlogic Украина  
    Дата: 05.09.06 19:15
    Оценка:
    Здравствуйте, FDSC, Вы писали:

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


    M>>Известно , что счет удобнее вести в 12 рмчной системе исчесления , но пользуемся мы 10 ричной ..


    FDS>Это откуда это известно. Мне вот говорили, что лучшая система исчисления — с основанием с числом e , так и не знаю почему


    Были такие исследования, источник не помню. но вкратце таблица умножения намного проще.

    12 делится без остатка на 2 , 3, 4, 6, в отличие от 10 который делится на 2 и 5. Помните как легко делить на 2 и на 5 различные числа в 10 ричной системе .
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Ищу работу, 3D, SLAM, computer graphics/vision.
    Re[11]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 05.09.06 19:15
    Оценка: 1 (1)
    Здравствуйте, FDSC, Вы писали:

    FDS>Я макросы и имел ввиду. Если честно, кроме макросов меня в Nemerle ничего не привлекает.


    А это зря. Макросы это средство автоматизации программирования, но программирования они не отменяют. А вот как раз програмировать лучше на боолее выраительном языке.

    FDS> Собственно, всё что я говорил — это про макросы. Сам язык мне почти нравится — он действительно не сильно отличается.


    Это ошибочное мнение. Он не неотличается. Он успешно "косит" под привычный язык. А отличается он сильно. Но чтобы это прочувствовать нужно пописать на нем код и попытаться использовать те вещи которые пока просто непонятны.

    FDS> По моему они вообще не позволяют адекватно переносить "макросовые" мысли на язык макросов


    Вот это вообще не понял.

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


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

    Гарантирую, что это ощущение ни в какое сравнение не идет с дедовольством от того или иного алголоподобного языка.

    FDS>Макросы (полностью)


    И что с ними не так? Ты писал когда нибудь программу которая генерировала бы код другой программы?

    FDS> и то, что нужно объявлять все переменные как переменные


    Хм. А как что же их тогда объявлять? Или ты предлагаешь вообще их не объявлять? Последнее приводит к ошибкам. Это натуральные грабли. Одна опечатка и ищи ошибку часами.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[13]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 05.09.06 19:15
    Оценка: +3
    Здравствуйте, Курилка, Вы писали:

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


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

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


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

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


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

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


    Еще раз. Это не лябда! Это эдакий вариант континюэшона, а еще точнее замена дальнего goto. За такое в приличных программистских конторах по пальцем железной линейкой были во времена С. Код может получиться столь не предсказуемым, что его отладка и изучение может стать пыткой.

    Вот как я понимаю это дело (псевдо Немерле, в реальном нет goto):
    def func1(f)
    {
        WriteLine(f()); // f никогда не вернет управление так как сработает goto
    }
    
    def func2()
    {
        func1(fun(){ goto label; 1 }); // "fun(){...}" - это объявление лямбды без параметров
    label:
        ...
    }
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[10]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 05.09.06 19:15
    Оценка: +2 :)
    Здравствуйте, Геннадий Васильев, Вы писали:

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


    Ну, да, конечно. Ты же ведь его слова на свой счет не относишь. Хотя именно так оно и есть.

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


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


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


    Скажи, вот ты как мэйнстрим-программист счташь себя низкоквалифицированным? Нет? Значит все же мэйнстрим ориентируется и на довольно квалифицированных?

    И вот еще что... Ты ответил не на мой вопрос. Я не спрашивал на кого ориентируется мэйнстрим. Я просил привести примеры амбиций мэйнстрима. Мы ведь говорили об оскорблениях и выливаемом дерьме выливаемом с амбициозностю и пафасом. Ты заговорил об "амбициях мэйнстрима". Так будь добр предявить какие-то факты существования амбиций. Ты вообще хорошо понимаешь смысл этого слова?

    ГВ>Если не достаточно, то добавлю ещё перекорёживание тезиса о постоянном обучении. Извини, но прыжки по направлению C++ -> Java -> C# -> ASP и прочий web никак "учёбой" назвать нельзя.


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

    ГВ> Это натаскивание на новые API в рамках одной идеи и не более того. А ещё и перекос в сторону "специалистов по API xxxxx", специалистов "по библиотеке X".


    Ну, что же поделаешь если библиотеки стали сложными. И причем тут амбиции, то?

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


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

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

    ГВ>Ну и кому это понравится?


    Хороший вопрос. Так что понравится то? Быдляческое недменность всех этих Колхозов, Вин2К и т.п.? Мне лично оно не не нравится. Мне вообще не наравится когда другие говоря со мной начинают намекать, что я или другие люди не дерьмо, а он Д'артоньян на белом коне.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re: Кстати
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 05.09.06 19:15
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>

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

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


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

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


    Если отбрасывать все решения кроме "все объект и общатся объекты могут только посылая сообщения", то и дийант получится вот такой. Ты же не можешь создать оператор if(условие) выражение else другое-выражение? Это же не укладывается в концепцию "все объект...".

    Ну, и без вывертов жить не интересно. А выверты необычны. Вот как случай с тем, что возрат внутри блока кода прерывает выполнение другой функции.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[20]: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 05.09.06 19:43
    Оценка: 4 (1) +1 -2
    Здравствуйте, FDSC, Вы писали:

    FDS>Вот мне это как раз очень страшно: "выход из блока во время его исполнения — штатная и достаточно часто использующаяся функция". С моей точки зрения — это скорее удобный хакерский приём. Он очень сильно усложняет верификацию алгоритма, просто сердцем чувствую, даже нехорошо как-то стало.


    Ваше предчуствие Вас обманывает. Таким "хакерским" приемом Вы и сами пользуетесь постоянно.

    int method(){
        if (a < 5) {
            return 8;
        } else
            return 10;
        }
    }


    Как работает эта программа: она вычисляет значение условия, а затем переходит к соответствущему составному оператору (блоку кода).
    Есть ли у Вас сомнения, куда перейдет управление после выполнения return. Я думаю, что нет.
    Но ведь Вы прервали выполнение блока кода (составного оператора) и вышли из метода! Хакерский прием или нет?

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

    void if(boolean condition, block trueBlock, block falseBlock);


    Теперь код можно переписать так:
    int method(){
        if(a < 5, {return 8}, {return 10});
    }

    Есть ли у Вас сомнения, куда перейдет управление после выполнения return? Я снова думаю, что сомнений нет.

    Теперь и сам Smalltalk. Угадайте, куда перейдет управление
    method
        (a < 5) ifTrue: [^8] ifFalse: [^10].


    P.S. В Smalltalk знак ^ аналогичен ключевому слову return
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[22]: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 05.09.06 19:43
    Оценка: +1 -1
    Здравствуйте, VladD2, Вы писали:

    Код:
    VD>
    VD>DataTable msgTable = msgs.Tables["message"]; if (msgTable == null)  return 0;
    VD>

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

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

    Давайте поговорим о повторном использовании и читаемости кода.
    Пусть имеется коллекция. Надо пробежаться по ней и выполнить некоторые операции.
    Операции, которые нужно выполнить, различны для первого элемента (doFirst), для последнего элемента (doLast), а также для всех средних элементов (doMiddle).

    На Java это может выглядеть так.

    for (int index = 0; index < col.size(); index++) {
      Object elem = col.get(index);
      if (index == 1)
        doFirst( elem );    // TODO: подставить свою операцию для первого элемента коллекции
      else if (index == col.size()-1)
        doLast( elem );        // TODO: подставить свою операцию для последнего элемента коллекции
      else
        doMiddle( elem );    // TODO: подставить свою операцию для средних элементов коллекции
    }


    Но проблема заключается в том, что такой код повторяется в проекте несколько раз, и в добавок, операции, которые надо выполнять над элементами различны (т.е. doFirst, doLast, doMiddle могут изменяться для разных случаев). В Java придется скопировать этот код тоже несколько раз!!

    В Smalltalk можно написать метод doFirst: doMiddle: doLast:, который решит эту проблему. Перебор коллекции будет осуществляться внутри этого метода, а вот сами операции, которые необходимо выполнить можно передать в качестве параметров.

    Вызов этого метода будет выглядеть так:
    col 
        doFirst: [:elem | ...]
        doMiddle: [:elem | ...]
        doLast: [:elem | ...]


    На мой взгляд этот код читается легче, чем на Java. Да и возможности повторного использования у него выше.
    Все это возможно в Smalltalk и невозможно в Java благодаря наличию блоков кода (BlockClosure).

    Радует, что в C# добавили такие возможности (я говорю про лямбду в C# 3), а там глядишь и Java подтянется в этом плане.
    Только интересно, примет ли это все mainstream? Наверное ДА — вон сколько шума вокруг LINQ.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[11]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 05.09.06 20:30
    Оценка: 12 (1) +4
    Здравствуйте, VladD2, Вы писали:

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

    VD>Ну, да, конечно. Ты же ведь его слова на свой счет не относишь. Хотя именно так оно и есть.

    Во всяком случае, я нисколько не оскорбился.

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

    ГВ>>Специализация по странным критериям, ориентация на a priori низкоквалифицированного программиста. Выхолащивание понятия "программист" до "кодер". Достаточно?
    VD>Скажи, вот ты как мэйнстрим-программист счташь себя низкоквалифицированным? Нет? Значит все же мэйнстрим ориентируется и на довольно квалифицированных?

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

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


    Естественно, у самого мэйнстрима, как у неодушевлённого явления, амбиций никаких нет. Я скорее говорю о тех требованиях, которые предъявляются к окружающим ради "следования майнстриму".

    ГВ>>Если не достаточно, то добавлю ещё перекорёживание тезиса о постоянном обучении. Извини, но прыжки по направлению C++ -> Java -> C# -> ASP и прочий web никак "учёбой" назвать нельзя.

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

    Естественно, это моё личное мнение. С которым окружающие вольны соглашаться или не соглашаться. Далее они вольны как-то оценить постинг или пройти мимо. Также они вольны написать ответный постинг или не написать его. В свою очередь я волен отреагировать на этот ответный постинг или проигнорировать его.

    VD>И не тебе решать чему нужно учиться, а чему нет.


    Да я и не пытаюсь решить за всех. Это прерогатива майнстрима — за всех решать.

    Я только со своей колокольни характеризую некоторое явление, которое мне не очень сильно нравится.

    VD>Ты то сам после С --> С++ куда дальше прыгнул? В "Философию программирования"?


    Шутку оценил. Но и ты не переоценивай RSDN в качестве индикатора, OK?

    ГВ>> Это натаскивание на новые API в рамках одной идеи и не более того. А ещё и перекос в сторону "специалистов по API xxxxx", специалистов "по библиотеке X".

    VD>Ну, что же поделаешь если библиотеки стали сложными. И причем тут амбиции, то?

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

    Впрочем, возможно, что я преувеличиваю.

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


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


    Что-то подобное я и ожидал услышать. Но ты не понял. Я говорю о скуке, вызванной однообразием и примитивностью задач. Здесь уже ни кино ни стриптиз не помогут.

    ГВ>>Ну и кому это понравится?

    VD>Хороший вопрос. Так что понравится то? Быдляческое недменность всех этих Колхозов, Вин2К и т.п.? Мне лично оно не не нравится. Мне вообще не наравится когда другие говоря со мной начинают намекать, что я или другие люди не дерьмо, а он Д'артоньян на белом коне.

    А мне не нравится, когда некто начинает вливать про "закостенелые мозги", "замшелые стереотипы" и "фобии". И почему-то я не удивляюсь, что этот же некто остро реагирует на нелицеприятные высказывания других.
    << Под музыку: a-Ha — The sun always shine on TV >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[2]: Кстати
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 05.09.06 20:30
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    ГВ>>

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

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


    VD>Если что-то хочешь сказать, просто скажи. Нет полчи. Я отвичаю только на вопросы смысл и цель которых понимаю.


    Буду краток: оценку высказываний не стоит связывать с личностью того, кто их сформулировал. Какая разница, кто сколько чего сделал?
    << Под музыку: a-Ha — Hunting high and low >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Дополнение
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 05.09.06 20:38
    Оценка: +1
    Здравствуйте, VladD2,

    Дополню рассуждения на тему опыта.

    Маленькая мышка сожрать большой амбар зерна, то есть "сделает" очень много, но банальным грызуном с примитивной моделью существования она от этого быть не перестанет. Тогда как учёный может жизнь положить на безуспешные исследования, то есть "сделать" в смысле ощутимого результата очень мало, но, возможно, проложить этим дорогу другим.

    Так что, при жизни к учёному нужно относиться пренебрежительнее, чем к грызуну?
    << Под музыку: a-Ha — The living daylights >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[14]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 05.09.06 23:27
    Оценка: +1 :)
    Здравствуйте, WolfHound, Вы писали:

    WH>А как исключения относятся к выходу черт знает куда?


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

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


    Очень хитрая логика. Такая хитра, что только настоящий индеец в ней может разобраться.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[8]: Насколько важен синтаксис языка?
    От: night beast СССР  
    Дата: 06.09.06 04:59
    Оценка:
    Здравствуйте, Kisloid, Вы писали:

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


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


    если он тот, кто я думаю, то кого попало (без причины) он дерьмом не обливает.
    Re[7]: Насколько важен синтаксис языка?
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 06.09.06 05:01
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>те же яйца, только в профиль. Только синтаксис индексеров слишком убогий, для использования в, например, ConcurrentMap.

    ANS>Рассмотрим метод V putIfAbsent(K key, V value), который атомарно устанавливает значение, если по ключу еще не было записи, или еще более сложный случай — "boolean replace(K key, V oldValue, V newValue)", который атомарно устанавливает значение, только если по ключу лежит определённый элемент. В рамки индексеров такая семантика уже не влазит. И получается — половина доступов к словарю по индексеру, а половина по методам.
    Ну, во-первых давайте посчитаем вызовы putIfAbsent по сравнению с put. Или ты по методу блондинки вероятность оцениваешь?
    Во-вторых, мне не нравится сам подход. Это что же, я буду изобретать по методу на каждую мыслимую транзакцию??? Имхо, лучше дать пользователю возможность явно обозначать границы:
    lock(map.SyncRoot)
    {
      if (!map.Contains[key])
          map[key]=value;
    }
    lock(map.SyncRoot)
    {
      if(map[key]==oldValue) map[key]=newValue;
    }



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

    О да. Удивляюсь, как еще джава решилась применить встроенные value-типы. А то ведь можно же было обойтись одними классами.

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

    ANS>В джава нельзя положить в словарь примитивный тип, так что со вторым пунктом всё впорядке
    Точнее, это третий пункт: джава suxx, потому что в ее коллекции нельзя положить примитивный тип. Кстати, теперь вроде можно. Или генерики в джаве так и не заработали?
    S>>3. Смоллток sux: это что, нам надо в каждом методе предоставлять параметры для разных исходов? А если я этого не сделал?
    ANS>Есть метод "at:" который просто кидает a KeyNotFoundError в случае чего. Выбор за программистом.
    Ну хоть это хорошо.

    ANS>Во-первых, как я написал выше, код можно записать на исключениях один в один с этим. Во-вторых, ты можеш передать хоть 10 разных блоков в 10 разных методов — возврат то сработает только для одного — до остальных дело просто не дойдёт.

    Неважно, до кого дойдет. Мне важно не писать один и тот же код дважды.
    ANS>В третих, можно создать один блок, присвоить его переменной и передавать в оба метода-доступа.
    А, ну вот это уже интереснее, хотя скорее всего читаться будет хуже, чем то же самое в виде try/catch.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[8]: Насколько важен синтаксис языка?
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 06.09.06 05:01
    Оценка: +2 :)
    Здравствуйте, Геннадий Васильев, Вы писали:


    ГВ>Есть. Ты забываешь про лес и выделяешь деревья. Win2K очень много дельного говорит (как и камрад Kolhoz). Не знаю, зачем это ему нужно. Может быть, его тоже достал "майнстрим" со своими амбициями? Я вот ничего оскорбительного в его словах не вижу

    а ты сходи постинги его почитай. Квалификация у чувака есть, но от так тщательно маскирует ее за ведрами помоев, что трудно разглядеть. И уж успешность его в жизни — не знаю, личной там или профессиональной, — вызывает обоснованные сомнения. Влад верно заметил — те, кто чувствует себя комфортно и достиг успеха, не бегают на форумы собеседников в умственной отсталости обвинять.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[7]: Насколько важен синтаксис языка?
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 06.09.06 05:01
    Оценка: +1
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    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". Так вот, "возврат" выполняется не в контексте блока, а в контексте где блок определён.

    Ой! Ужасть, как интересно. Чего-то я здесь не понимаю.
    Вопрос №1: что еще "интересного", т.е. контекстно-специфичного, можно сделать, помимо return? Ну там: break, continue, goto?
    ANS> То есть выполнение команды "return" из анонимной функции в C#, или метода анонимного класса в Java возвращают управление в код, вызвавший эту функцию. А в ST происходит возврат из того метода, где был блок определён.
    Вопрос №2: а как это работает вместе с присвоением блока кода в переменную с последующей ее передачей за пределы контекста.
    Подробнее: допустим, у нас есть переменная absent. Мы в нее присвоили значение в контексте одного метода. А вызвали в рамках совсем другого. Куда вернется управление?
    ANS>Отсутсвие этой фичи делает невозможным реализацию аналога at:ifAbsent: в Java и C#.
    Угу, причем не вполне ясно, нужен ли этот аналог.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[9]: Насколько важен синтаксис языка?
    От: _rasta  
    Дата: 06.09.06 05:12
    Оценка: :)
    Здравствуйте, Sinclair, Вы писали:

    ГВ>>Есть. Ты забываешь про лес и выделяешь деревья. Win2K очень много дельного говорит (как и камрад Kolhoz). Не знаю, зачем это ему нужно. Может быть, его тоже достал "майнстрим" со своими амбициями? Я вот ничего оскорбительного в его словах не вижу

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

    ага, например господа линус и rms
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[21]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 06.09.06 05:19
    Оценка: 5 (1)
    Здравствуйте, FDSC, Вы писали:

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


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

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

    FDS>Это я догадался. А если бы мне нужно было написать настоящую функцию?


    Это и есть настоящая функция. Значением блока (т.е. объектом, который возвращается после выполнения метода "value") является результат последней операции в блоке.
    startingMethod
        |aBlock blockResult val1 val2|  "прописываем локальные переменные aBlock, blockResult, val1 и val2"
    
        aBlock := [val1 + val2].  "1.1. присваиваем переменной aBlock объект класса блок со значением [val1 + val2]"
    
        val1 := 1.  "1.2. присваиваем переменной val1 значение 1"
    
        val2 := 2.  "1.3. присваиваем переменной val2 значение 2"
    
        blockResult := self methodThatWorksWithBlock: aBlock.  "1.4. вызываем у самого себя метод                          
                                                                methodThatWorksWithBlock: с параметром aBlock
                                                                и записываем результат в переменную blockResult"
    
        blockResult printSomewhere.  "1.5. каким-то образов выводим значение переменной blockResult"
    methodThatWorksWithBlock: aBlock
        |blockResult|  "приписываем локальную переменную blockResult"
    
        blockResult := aBlock value.  "2.1. выполняем блок aBlock и записываем результат в blockResult"
    
        ^blockResult  "2.2. Возвращаем blockResult"


    Порядок выполнения и значения переменных:
    1. 1.1. val1 = nil; val2 = nil; aBlock до выполнения операции — nil, после выполнения операции — блок [val1 + val2].
    2. 1.2. val1 = 1
    3. 1.3. val2 = 2
    4. 1.4. вызываем метод "methodThatWorksWithBlock:" с параметром aBlock.
    5. 2.1. вызываем метод "value" у объекта aBlock
    6. 1.1. исполняем блок. val1 = 1; val2 = 2; aBlock = блок [val1 + val2]; значение блока после выполнения = 3
    7. 2.1. присваиваем переменной blockResult значение 3
    8. 2.2. выходим из метода, возвращая значение 3
    9. 1.4. присваиваем переменной blockResult значение 3
    10. 1.5.


    Разумеется, в блоке может быть сколько угодно операций (разделяемых стандартно — точкой), кроме того в нём можно определять локальные переменные блока (тоже стандартно — перечислив в начале блока их имена и заключив их между символами "|"), а также изменять значения переменных контекста — как локальные так и любые другие.
    --
    Бесчастнов Евгений
    Re[9]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 06.09.06 05:37
    Оценка: :)
    Здравствуйте, Sinclair, Вы писали:

    ГВ>>Есть. Ты забываешь про лес и выделяешь деревья. Win2K очень много дельного говорит (как и камрад Kolhoz). Не знаю, зачем это ему нужно. Может быть, его тоже достал "майнстрим" со своими амбициями? Я вот ничего оскорбительного в его словах не вижу

    S>а ты сходи постинги его почитай. Квалификация у чувака есть, но от так тщательно маскирует ее за ведрами помоев, что трудно разглядеть.

    Почему я никакой маскировки не заметил? Что я сделал не так?

    S>И уж успешность его в жизни — не знаю, личной там или профессиональной, — вызывает обоснованные сомнения.


    В контексте программистского форума мне его личная жизнь совсем не интересна. И твои (а также Влада и остальных) догадки о ней — тем паче.

    S>Влад верно заметил — те, кто чувствует себя комфортно и достиг успеха, не бегают на форумы собеседников в умственной отсталости обвинять.


    Уф-ф-ф... Тяжела она, форумная жизнь. Не успели с личной жизнью оппонента разобраться, так ещё и его целеполагание определять надо. Не позавидуешь!
    << Под музыку: Rammstein — Fever Frei! >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[14]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 06.09.06 05:48
    Оценка: 11 (1)
    Здравствуйте, WolfHound, Вы писали:

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


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

    EB>>Ну блин %-). А ТЫ как относишься к exception-ам?
    WH>А как исключения относятся к выходу черт знает куда?
    Ну, во-первых, не чёрт знает куда, а в контекст, находящийся в стеке непосредственно перед контекстом, в котором был определён блок. А во-вторых "вольный выход из любой точки выражения" — это несколько о другом (даже если закрыть глаза, что это устверждение неверно, и выход может быть отнюдь не из любой точки выражения
    Автор: Eugene Beschastnov
    Дата: 05.09.06
    ).

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

    Предположу, что бросится какой-то exception, но всё равно интересно

    Итак, у нас есть три метода в классе SomeClass:
    startingMethod
        | collectionOfBlocks |
    
        collectionOfBlocks := self collectionOfBlocks.  "1.1"
    
        self worksWithCollectionOfBlocks: collectionOfBlocks.  "1.2"
    collectionOfBlocks
        | val1 val2 aBlock1 aBlock2 |
    
        val1 := 1. "2.1"
    
        val2 := 2. "2.2"
    
        aBlock1 := [^val1]. "2.3"
    
        aBlock2 := [^val1 + val2]. "2.4"
    
        ^OrderedCollection with: aBlock1 with: aBlock2  "2.5. создаём коллекцию из двух элементов"
    worksWithCollectionOfBlocks: aCollection
        aCollection do:  "3.1. метод do: осуществляет обход по коллекции и для каждого элемента выполняет блок,
                               передаваемый в качестве параметра"
    
            [ :aBlock |  "здесь мы описываем, что блок требует один параметр, 
                          в качестве которого поочерёдно будут переданы все элементы коллекции"
    
            aBlock value  "3.2. выполняем каждый блок, лежащий в коллекции"
            ]


    Исполняем
    SomeClass startingMethod


    Порядок исполнения:
    1. 1.1 — вызываем
    2. 2.1
    3. 2.2
    4. 2.3
    5. 2.4
    6. 2.5
    7. 1.1 — присваиваем
    8. 1.2
    9. 3.1
    10. 3.2 (aBlock = [^val1])
    11. 2.3
    12. возникает exception "BlockCannotReturn: Block cannot return"

    Как и ожидалось
    --
    Бесчастнов Евгений
    Re[15]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 06.09.06 05:50
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

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

    EB>>>Ну блин %-). А ТЫ как относишься к exception-ам?
    WH>>А как исключения относятся к выходу черт знает куда?
    EB>Ну, во-первых, не чёрт знает куда, а в контекст, находящийся в стеке непосредственно перед контекстом, в котором был определён блок. А во-вторых "вольный выход из любой точки выражения" — это несколько о другом (даже если закрыть глаза, что это устверждение неверно, и выход может быть отнюдь не из любой точки выражения
    Автор: Eugene Beschastnov
    Дата: 05.09.06
    ).

    Забыл добавить — и, собственно, unchecked exception-ы в плане "вольного выхода из любой точки выражения" значительно более "опасны" — они могут возникнуть в любом месте, а отнюдь не только в value*-методах.
    --
    Бесчастнов Евгений
    Re[4]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 06.09.06 05:59
    Оценка:
    Здравствуйте, trophim, Вы писали:


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

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

    Как уже говорили вопрос привычки. "новички" обычно уже знают другой язык. Чтобы сделать чистый экперемент нужны настоящие новички без знаний языков програмирования. Насколько я знаю школьники легко осваивают смаллток.
    Re[11]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 06.09.06 05:59
    Оценка: +1
    Здравствуйте, FDSC, Вы писали:

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


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


    Ломка на уровне повыше чем использование языка программрования (конструирования по макконеллу), притом стадия конструирования тоже меняется целиком. Влад прав надо попробовать, непередаваемые очущения
    Re[9]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 06.09.06 05:59
    Оценка: 1 (1)
    Здравствуйте, VladD2, Вы писали:

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


    VD>Спай четко показывает, что все окна написаны на MFC или еще чем-то там (давно дело было). То есть сама среда написана на С++ или с нехилым его применением.


    То что там окна MFC'шные не обязательно значит что среда написана на C++. Как пример есть биндинг MFC на питон, и на питоне можно писать используя MFC. И даже есть IDE написаное на питоне используя MFC — PythonWin.
    Re[4]: Система исчисления
    От: FR  
    Дата: 06.09.06 05:59
    Оценка:
    Здравствуйте, minorlogic, Вы писали:

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


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


    M>>>Известно , что счет удобнее вести в 12 рмчной системе исчесления , но пользуемся мы 10 ричной ..


    FDS>>Это откуда это известно. Мне вот говорили, что лучшая система исчисления — с основанием с числом e , так и не знаю почему


    M>Были такие исследования, источник не помню. но вкратце таблица умножения намного проще.


    M>12 делится без остатка на 2 , 3, 4, 6, в отличие от 10 который делится на 2 и 5. Помните как легко делить на 2 и на 5 различные числа в 10 ричной системе .


    Самая удобная для устного счета (притом сама древняя из известных) Шумерская, если сводить к нашим понятиям получается что используется 60-ричная система
    Re[15]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 06.09.06 06:10
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>
  • возникает exception "BlockCannotReturn: Block cannot return"

    Кстати, замечу, что этот exception бросается, только если именно нельзя вернуться. При этом контекст, где был определён блок, не теряется и, если в блоке нет оператора "^", то он замечательно и корректно выполняется.
  • --
    Бесчастнов Евгений
    Re[8]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 06.09.06 06:19
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    ANS>>Вместо пугающей "крышечки" я написал слово "return". Так вот, "возврат" выполняется не в контексте блока, а в контексте где блок определён.

    S>Ой! Ужасть, как интересно. Чего-то я здесь не понимаю.
    S>Вопрос №1: что еще "интересного", т.е. контекстно-специфичного, можно сделать, помимо return? Ну там: break, continue, goto?
    В Smalltalk нет break, continue и goto . А отвечая на вопрос — насколько я знаю Smalltalk, больше ничего такого нельзя сделать. Ну, за исключением прямых операций с контекстом и стеком исполнения, которые хотя и возможны (доступ до контекста есть, контекст — это тоже объект, следовательно с ним тоже можно что-то поделать), но вот они точно являются грязным хаком и никогда не используются.

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

    S>Вопрос №2: а как это работает вместе с присвоением блока кода в переменную с последующей ее передачей за пределы контекста.
    S>Подробнее: допустим, у нас есть переменная absent. Мы в нее присвоили значение в контексте одного метода. А вызвали в рамках совсем другого. Куда вернется управление?
    http://www.rsdn.ru/Forum/Message.aspx?mid=2094926&amp;only=1
    Автор: Eugene Beschastnov
    Дата: 05.09.06


    ANS>>Отсутсвие этой фичи делает невозможным реализацию аналога at:ifAbsent: в Java и C#.

    S>Угу, причем не вполне ясно, нужен ли этот аналог.
    Нужен или нет — вопрос спорный, но в Java мне этой возможности иногда не хватает.
    --
    Бесчастнов Евгений
    Re[16]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 06.09.06 06:23
    Оценка: 1 (1) +1 :))
    Здравствуйте, VladD2, Вы писали:


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

    Ну не получается . Ни у меня, ни у кого другого, использующего Smalltalk (замечу — именно использующего). Что мы не так делаем?
    --
    Бесчастнов Евгений
    Re[4]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 06.09.06 06:26
    Оценка:
    Здравствуйте, trophim, Вы писали:

    T>Да фактически каждый новичок отмечает эту особенность синтаксиса смоллтока.


    Интересно, были ли среди них "новички", знакомящиеся с ST, но еще не знакомых с C/Java/C#?
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[5]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 06.09.06 06:30
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>Как уже говорили вопрос привычки. "новички" обычно уже знают другой язык. Чтобы сделать чистый экперемент нужны настоящие новички без знаний языков програмирования. Насколько я знаю школьники легко осваивают смаллток.


    Вот ссылка в тему — http://www.smalltalk.ru/2005/08/squeak.html
    --
    Бесчастнов Евгений
    Re[5]: Система исчисления
    От: minorlogic Украина  
    Дата: 06.09.06 06:30
    Оценка:
    Здравствуйте, FR, Вы писали:


    FR>Самая удобная для устного счета (притом сама древняя из известных) Шумерская, если сводить к нашим понятиям получается что используется 60-ричная система


    Про усную не знаю , а в столбик 12 ричная
    Ищу работу, 3D, SLAM, computer graphics/vision.
    Re[27]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 06.09.06 06:37
    Оценка:
    Здравствуйте, Курилка, Вы писали:

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


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


    Это так, Но вызов блока с нелокальным возвратом возвращает управление из контекста где блок определён.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[22]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 06.09.06 06:37
    Оценка: -1
    Здравствуйте, VladD2, Вы писали:

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


    Блин, реально не пойму о каком непредсказуемом пути идёт реч. Если в блоке есть нелокальный возврат, то выход проискодит из места определения блока. То есть код работает так же как и код, который ты привёл. Это указано в спецификации метода. Если тебя пугает то, что метод делает не то, что должен делать, то не стоит пользоваться ни одним ЯП вообще.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[19]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 06.09.06 06:41
    Оценка:
    Здравствуйте, Курилка, Вы писали:

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


    Ран-тайм исключение.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[12]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 06.09.06 06:47
    Оценка: 5 (1)
    Здравствуйте, VladD2, Вы писали:

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


    В ST которые реализовывали для JVM и .Net ВМ нелокальный возврат реализовывали через механизм исключений. То есть, этот код эквивалентен созданию своего уникального класса исключения, определению блока try..catch, который ловит это уникальное исключение _перед_ вызовом метода с блоком, и бросанию этого исключения при активации блока. Плюс ошибка при попытке бросить исключение, если управление уже вышло из нашего уникального try..catch.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[9]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 06.09.06 06:54
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

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


    Так прям и никогда. В Seaside first-class continuation реализованы путём манипуляции цепочкой контекстов активации, в VW — исключения (хотя может и есть какие-то ускорения в ВМ, не знаю, проверить не могу).

    S>>Вопрос №2: а как это работает вместе с присвоением блока кода в переменную с последующей ее передачей за пределы контекста.


    можно делать нелокальный возврат, можно просто вернуть значение. Блок с нелокальным возвратом бросает исключение если контекст выполнения уже уничтожен (управление вышло из него назад). С блоком, возвращающим значение, и так всё понятно.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[8]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 06.09.06 07:05
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>Во-вторых, мне не нравится сам подход. Это что же, я буду изобретать по методу на каждую мыслимую транзакцию??? Имхо, лучше дать пользователю возможность явно обозначать границы:


    Эти коллекции специально введены для того, чтобы не использовать синхронизацию. Я так понимаю, в C# такого не предвидится по синтаксическим причинам?

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

    S>О да. Удивляюсь, как еще джава решилась применить встроенные value-типы. А то ведь можно же было обойтись одними классами.

    это бага, которую они специфицировали и она стала фичей

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

    ANS>>В джава нельзя положить в словарь примитивный тип, так что со вторым пунктом всё впорядке
    S>Точнее, это третий пункт: джава suxx, потому что в ее коллекции нельзя положить примитивный тип. Кстати, теперь вроде можно. Или генерики в джаве так и не заработали?

    При чем тут дженерики? Если нужно, использую (авто)боксинг. А в .Net value в коллекции без боксинга ложатся?

    S>А, ну вот это уже интереснее, хотя скорее всего читаться будет хуже, чем то же самое в виде try/catch.


    Ну я пример кода привёл. Он действительно выглядит хуже чем с try/catch, но, как я указал, он неэквивалентен этому способу а лучше его (хотя бы потому, что исключение KeyNotFound может выбросить какаято внутренняя часть мапы, и эта ошибка будет замаскирована).
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[9]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 06.09.06 07:05
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


    VD>Спай четко показывает, что все окна написаны на MFC или еще чем-то там (давно дело было). То есть сама среда написана на С++ или с нехилым его применением.


    Ну, правильно! Я ж говорю все контролы нэтивные-виндовые.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[10]: Насколько важен синтаксис языка?
    От: Mirrorer  
    Дата: 06.09.06 07:09
    Оценка: +1 -1
    Здравствуйте, VladD2, Вы писали:


    VD>Это не лучший вариант. EBDF бывает разным. Но даже так это пахнет только если что-то простое. На сложном ты сразу увидишь разницу.


    Не совсем уловил мысль..

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


    Есть подозрение граничащее с уверенностью что то же самое будет и с немерловыми макросами, и с многострадальной лямбдой. Если С++ считать мейнстримом, то я уверен что то же самое можно сказать и про темплейты.
    ... << RSDN@Home 1.1.4 Doors — People Are Strange>>
    Re[6]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 06.09.06 07:34
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


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


    VD>Если отбрасывать все решения кроме "все объект и общатся объекты могут только посылая сообщения", то и дийант получится вот такой. Ты же не можешь создать оператор if(условие) выражение else другое-выражение? Это же не укладывается в концепцию "все объект...".


    В общем, верно — это было сделано для стройности языка, выражающейся в том, что количество основных принципов должно быть минимально и исключения из них нежелательны.
    --
    Бесчастнов Евгений
    Re[10]: Насколько важен синтаксис языка?
    От: Klapaucius  
    Дата: 06.09.06 07:38
    Оценка:
    Здравствуйте, eao197, Вы писали:

    Вы считаете, что Ruby это "элитарный язык"? Это не риторический вопрос.
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re[10]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 06.09.06 07:50
    Оценка: +1
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


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


    ANS>Так прям и никогда. В Seaside first-class continuation реализованы путём манипуляции цепочкой контекстов активации, в VW — исключения (хотя может и есть какие-то ускорения в ВМ, не знаю, проверить не могу).


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


    S>>>Вопрос №2: а как это работает вместе с присвоением блока кода в переменную с последующей ее передачей за пределы контекста.


    ANS>можно делать нелокальный возврат, можно просто вернуть значение. Блок с нелокальным возвратом бросает исключение если контекст выполнения уже уничтожен (управление вышло из него назад). С блоком, возвращающим значение, и так всё понятно.
    --
    Бесчастнов Евгений
    Re[23]: Насколько важен синтаксис языка?
    От: investigator Россия  
    Дата: 06.09.06 08:29
    Оценка: +1
    Здравствуйте, Beam, Вы писали:

    B>В Smalltalk можно написать метод doFirst: doMiddle: doLast:, который решит эту проблему. Перебор коллекции будет осуществляться внутри этого метода, а вот сами операции, которые необходимо выполнить можно передать в качестве параметров.


    В Java можно написать метод

    public void doMyCoolIteration(MyCoolMethodHolder holder)


    где MyCoolMethodHolder есть

    interface MyCoolMethodHolder {
       void doFirst(Object element);
       void doMiddle(Object element);
       void doLast(Object element);
    }



    B>Вызов этого метода будет выглядеть так:

    B>
    B>col 
    B>    doFirst: [:elem | ...]
    B>    doMiddle: [:elem | ...]
    B>    doLast: [:elem | ...]
    B>


    Вызов этого метода будет выглядеть так
    list.doMyCoolIteration(new MyCoolMethodHolder() {
       public void doFirst(Object element) {...}
       public void doMiddle(Object element) {...}
       public void doLast(Object element) {...}
    });



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


    Читабельность в данном случае, ИМХО, зависит только от того, на чем читатель привык писать.

    B>Все это возможно в Smalltalk и невозможно в Java благодаря наличию блоков кода (BlockClosure).


    Что-то, возможно, в Java и невозможно из-за отсутствия closures, но только не то, что было приведено в качестве примера.

    B>Радует, что в C# добавили такие возможности (я говорю про лямбду в C# 3), а там глядишь и Java подтянется в этом плане.


    Java может и подтянется (разговоры есть):
    http://gafter.blogspot.com/2006/08/closures-for-java.html
    http://gafter.blogspot.com/2006/08/whats-point-of-closures.html
    Re[11]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 06.09.06 09:05
    Оценка: 2 (1)
    Здравствуйте, Klapaucius, Вы писали:

    K>Вы считаете, что Ruby это "элитарный язык"? Это не риторический вопрос.


    Нет. Ruby не элитарный язык. Как, впрочем, и Smalltalk.

    В вопросе Дарнея, на который я отвечал, говорилось и о новых технологиях и об "элитарных языках". Пример с 37signals, Ruby и RoR я привел в ответ на фразу об использовании новых технологий в стартапах. Как раз на тот момент Ruby и RoR для большинства разработчиков были новыми и экзотическими технологиями.

    Что же касается самого Ruby, то он производит впечатление простого. Но это только впечатление. Мо моим впечатлениям, он многослоен как C++. Что является для меня привлекательной стороной Ruby, но мне кажется, что со временем это сыграет с Ruby такую же шутку, как с C++.


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

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



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

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

    FR>Как уже говорили вопрос привычки. "новички" обычно уже знают другой язык. Чтобы сделать чистый экперемент нужны настоящие новички без знаний языков програмирования. Насколько я знаю школьники легко осваивают смаллток.


    Ерунда. Не видел ни одного нормального школьника, который что-то осваивает легко
    Re[16]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 06.09.06 09:23
    Оценка: :)
    Здравствуйте, eao197, Вы писали:

    E>Изначально речь шла не о преимуществах а о запущенных на RoR проектах.

    E>Я не понял, тебе список не нравится, проектов мало?

    откровенно говоря — да. портфолио практически любой веб-студии средней руки будет насчитывать не меньше проектов
    этого недостаточно, чтобы говорить о чем-то выдающемся. когда на RoR начнут писать проекты, которые с трудом делаются другими инструментами — тогда и можно будет делать какие-то выводы
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[10]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 06.09.06 09:27
    Оценка: -2
    Здравствуйте, Геннадий Васильев, Вы писали:

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


    Ты лучше не о чужой наивности рассуждай, а хоть что-нибудь по делу скажи. Для разнообразия.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[3]: Система исчисления
    От: Дарней Россия  
    Дата: 06.09.06 09:43
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    у 12 намного больше делителей, чем у 10 -> многие дроби в ней записываются проще, чем в 10-ричной
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[16]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 06.09.06 09:44
    Оценка:
    Здравствуйте, eao197, Вы писали:

    хотя, если хорошо подумать.... некоторые преимущества у RoR наверно есть, если его используют. Или были на момент его появления.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[12]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 09:47
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


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


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

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


    FDS>>Макросы (полностью)


    VD>И что с ними не так? Ты писал когда нибудь программу которая генерировала бы код другой программы?


    Да, например в мае на C#, правда она у меня динамически компилировалась прямо в runtime в зависимости от ввода пользователя. Это было ужасно и я не знаю, как это сделать лучше... Вообще, с генерацией кода у меня всё плохо, но по ней совершенно нет ничего понятно написанного.

    С макросами не так всё — я просто не понимаю как так можно что-то писать и я не вижу нормальной (строгой) документации по макросам. У меня от них просто в глазах рябит (впечатление похуже, чем когда открываешь исполняемый файл в текстовом редакторе — там хоть что-то понятно).

    FDS>> и то, что нужно объявлять все переменные как переменные


    VD>Хм. А как что же их тогда объявлять? Или ты предлагаешь вообще их не объявлять? Последнее приводит к ошибкам. Это натуральные грабли. Одна опечатка и ищи ошибку часами.


    Я имею ввиду модификатор mutable. Насколько я понимаю, без него переменная — не переменная, а константа (точнее readonly поле).
    "Одна опечатка и ищи ошибку часами." — я не поклонник скриптовых языков, но когда на них пишу таких ошибок почему-то не допускаю (именно в скриптах ). Уже много о них читал и всё время удивлялся.



    VD>Это ошибочное мнение. Он не неотличается. Он успешно "косит" под привычный язык. А отличается он сильно. Но чтобы это прочувствовать нужно пописать на нем код и попытаться использовать те вещи которые пока просто непонятны.


    Не очень понял, какие вещи нужно попытаться использовать, да ещё если они непонятны? Можно приблизительный списочек: я попытаюсь.
    Re[23]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 09:52
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


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


    ANS>Блин, реально не пойму о каком непредсказуемом пути идёт реч. Если в блоке есть нелокальный возврат, то выход проискодит из места определения блока. То есть код работает так же как и код, который ты привёл. Это указано в спецификации метода. Если тебя пугает то, что метод делает не то, что должен делать, то не стоит пользоваться ни одним ЯП вообще.


    Ага, и вообще не стоит программировать.
    Давайте будем искать ошибку целый день, а в результате окажется, что в какой-то библиотечной функции не было учтено, что возврат может происходить туда-то.
    Re[21]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 09:56
    Оценка:
    Здравствуйте, Beam, Вы писали:

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


    FDS>>Вот мне это как раз очень страшно: "выход из блока во время его исполнения — штатная и достаточно часто использующаяся функция". С моей точки зрения — это скорее удобный хакерский приём. Он очень сильно усложняет верификацию алгоритма, просто сердцем чувствую, даже нехорошо как-то стало.


    B>Ваше предчуствие Вас обманывает. Таким "хакерским" приемом Вы и сами пользуетесь постоянно.


    B>
    B>int method(){
    B>    if (a < 5) {
    B>        return 8;
    B>    } else
    B>        return 10;
    B>    }
    B>}
    B>


    Я делаю это так:
    int method(){
    
        if (a < 5)
            {
           return 8;
        };
    
          return 10;
    }



    B>Теперь и сам Smalltalk. Угадайте, куда перейдет управление

    B>
    B>method
    B>    (a < 5) ifTrue: [^8] ifFalse: [^10].
    B>


    B>P.S. В Smalltalk знак ^ аналогичен ключевому слову return


    Я уже говорил, что грабли здесь появляются из-за того, что этими блоками можно слишком легко манипулировать — в частности, передавать в другую функцию. Я даже сказал где-то, что если это запретить (их передачу в качестве параметров), то возможность довольно интересная получится.
    Re[20]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 09:57
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


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


    ANS>Ран-тайм исключение.


    А ведь это можно проверить статически...
    Re[16]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 10:02
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

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


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

    EB>>>>Ну блин %-). А ТЫ как относишься к exception-ам?
    WH>>>А как исключения относятся к выходу черт знает куда?
    EB>>Ну, во-первых, не чёрт знает куда, а в контекст, находящийся в стеке непосредственно перед контекстом, в котором был определён блок. А во-вторых "вольный выход из любой точки выражения" — это несколько о другом (даже если закрыть глаза, что это устверждение неверно, и выход может быть отнюдь не из любой точки выражения
    Автор: Eugene Beschastnov
    Дата: 05.09.06
    ).

    EB>Забыл добавить — и, собственно, unchecked exception-ы в плане "вольного выхода из любой точки выражения" значительно более "опасны" — они могут возникнуть в любом месте, а отнюдь не только в value*-методах.

    Это не значит, что они используются постоянно. Я вот что-то не припомню, что бы у меня в программе были ошибки из-за неверных обработок исключительных ситуаций
    Re[3]: Кстати
    От: Дарней Россия  
    Дата: 06.09.06 10:02
    Оценка: :)
    Здравствуйте, Геннадий Васильев, Вы писали:

    Мне очень интересно, почему именно ты так часто обвиняешь оппонентов в демагогии. Очень странно. Ни у кого другого это так часто не наблюдал. Даже у Влада
    Не подскажешь, в чем тут секрет? Только не говори, что тебя несчастного все травят.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[13]: Насколько важен синтаксис языка?
    От: Mirrorer  
    Дата: 06.09.06 10:03
    Оценка: 5 (2) +2
    Здравствуйте, FDSC, Вы писали:

    FDS>Можете дать какую-нидуь ссылку на Лисп (компилятор и, хотя бы, стандарт, а лучше книгу на русском), а то у меня от поиска в интернете крышу сносит

    Перевод классической Structure and Interpretation Of Computer Programs
    здесь
    Интерпретатор
    здесь

    Там не совсем лисп, а Scheme, диалект лиспа, но общее представление он дает..
    ... << RSDN@Home 1.1.4 The Offspring — The Meaning Of Life>>
    Re[17]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 10:06
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

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



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

    EB>Ну не получается . Ни у меня, ни у кого другого, использующего Smalltalk (замечу — именно использующего). Что мы не так делаем?

    Вы уверены?
    Наверное, это сродни тому, что я не делаю опечаток в названии переменных в скриптовых языках (там, где переменные не нужно объявлять) — кто-то может так делать, кто-то нет. Но согласитесь, VladD2 привёл классный пример, кто даст гарантию, что какой-нибудь "умник" так не сделает
    Re[24]: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 06.09.06 10:06
    Оценка: +1
    Здравствуйте, investigator, Вы писали:

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


    B>>В Smalltalk можно написать метод doFirst: doMiddle: doLast:, который решит эту проблему. Перебор коллекции будет осуществляться внутри этого метода, а вот сами операции, которые необходимо выполнить можно передать в качестве параметров.


    I>В Java можно написать метод


    I>
    I>public void doMyCoolIteration(MyCoolMethodHolder holder)
    I>


    Да, я знаю о такой возможности. Я могу сказать одно — ЭТО НЕ УДОБНО. По следующим причинам:
    1. для каждого такого метода Вам придется описать свой интерфейс (а их может быть очень много)
    2. затруднено использование локальных переменных класса в котором используется этот метод, т.к.
    в анонимный класс можно передавать только final переменные. Это тоже обходится (достаточно коряво)
    3. все это — достаточно редко используемая техника для Java, многие будут спотыкаться при чтении этого кода, а для Smalltalk же это обычная техника

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


    I>Читабельность в данном случае, ИМХО, зависит только от того, на чем читатель привык писать.


    Скажу за себя. Я могу написать этот код и на Java и на Smalltalk, но понятнее мне данный код Smalltalk.
    Хотя бы потому что мне не нужно создавать анонимный класс.

    Кстати, сушествуют и другие способы реализации аналога closures. Например, через reflection, или с помощью ввода типовых интерфейсов для описания closure (аналогично интерфейсу Runnable). Здесь появляются другие плюсы и минусы, но все равно это не удобно!

    B>>Все это возможно в Smalltalk и невозможно в Java благодаря наличию блоков кода (BlockClosure).


    I>Что-то, возможно, в Java и невозможно из-за отсутствия closures, но только не то, что было приведено в качестве примера.


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

    I>Java может и подтянется (разговоры есть):

    I>http://gafter.blogspot.com/2006/08/closures-for-java.html
    I>http://gafter.blogspot.com/2006/08/whats-point-of-closures.html
    К сожалению, это лишь надстройка на Java или изменение самого языка. Но этого нет в самом языке (официально).
    Пока не примут стандарт, не будет поддержки — IDE, библиотек, а следовательно не будет массового использования этих фич.
    С такми же успехом можно использовать уже готовые языкы для JVM. Тот же Groovy.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[24]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 06.09.06 10:08
    Оценка: 1 (1)
    Здравствуйте, FDSC, Вы писали:

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


    Всё, на эту тему отвечаю в последний раз: механизм возврата подобен механизму исключений
    Автор: Andrei N.Sobchuck
    Дата: 06.09.06
    . И механизм "учитывания" такой же — вставить finaly при надобности.

    Кстати, в ST есть два способа реакции: ensure:, который вызывается всегда и аналог finaly, и ifCurtailed: который вызывается только если произошло исключение и аналог ловлению любого исключения, некоей обработки, и пробрасывания исключения дальше, только само исключение при этом недоступно. Удобно если нужно обработать факт сбой, а что за сбой не важно.
    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 блог
    Дата: 06.09.06 10:09
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


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


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


    Я выделил ещё, вы не совсем правильно меня поняли. Я полностью с вами согласен. Но в некоторых ситуациях это было бы что-то вроде сишных макросов.
    Дополнение
    От: Mirrorer  
    Дата: 06.09.06 10:09
    Оценка:
    Здравствуйте, Mirrorer, Вы писали:

    И для того чтобы не совсем срывало крышу мой взгляд на лисп
    Re[2]: Что мы потеряли?
    Автор: Mirrorer
    Дата: 28.08.06

    А также ссылка от Lazy Cjow Rhrr
    The Nature of Lisp
    ... << RSDN@Home 1.1.4 The Offspring — Me & My Old Lady>>
    Re[13]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 10:10
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


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


    ANS>В ST которые реализовывали для JVM и .Net ВМ нелокальный возврат реализовывали через механизм исключений. То есть, этот код эквивалентен созданию своего уникального класса исключения, определению блока try..catch, который ловит это уникальное исключение _перед_ вызовом метода с блоком, и бросанию этого исключения при активации блока. Плюс ошибка при попытке бросить исключение, если управление уже вышло из нашего уникального try..catch.


    Но этот возврат происходит при ошибке, которую метод не в состоянии обработать. Исключения больше ни для чего другого не используются. А для чего используются ваши блоки?
    Re[9]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 10:17
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


    S>>Во-вторых, мне не нравится сам подход. Это что же, я буду изобретать по методу на каждую мыслимую транзакцию??? Имхо, лучше дать пользователю возможность явно обозначать границы:


    ANS>Эти коллекции специально введены для того, чтобы не использовать синхронизацию. Я так понимаю, в C# такого не предвидится по синтаксическим причинам?


    Причём тут синтаксические причины? Вас просто хотели запутать. Вы всё правильно говорили.

    S>>А, ну вот это уже интереснее, хотя скорее всего читаться будет хуже, чем то же самое в виде try/catch.


    ANS>Ну я пример кода привёл. Он действительно выглядит хуже чем с try/catch, но, как я указал, он неэквивалентен этому способу а лучше его (хотя бы потому, что исключение KeyNotFound может выбросить какаято внутренняя часть мапы, и эта ошибка будет замаскирована).


    Ну, в таком случае сделайте throw; в конце обработки исключения, и её увидят все
    Re[12]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 10:23
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

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


    ГВ>Естественно, у самого мэйнстрима, как у неодушевлённого явления, амбиций никаких нет. Я скорее говорю о тех требованиях, которые предъявляются к окружающим ради "следования майнстриму".


    И что это за требования?

    ГВ>>> Это натаскивание на новые API в рамках одной идеи и не более того. А ещё и перекос в сторону "специалистов по API xxxxx", специалистов "по библиотеке X".

    VD>>Ну, что же поделаешь если библиотеки стали сложными. И причем тут амбиции, то?

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


    ГВ>Впрочем, возможно, что я преувеличиваю.


    Не сильно


    ГВ>>>Ну и кому это понравится?

    VD>>Хороший вопрос. Так что понравится то? Быдляческое недменность всех этих Колхозов, Вин2К и т.п.? Мне лично оно не не нравится. Мне вообще не наравится когда другие говоря со мной начинают намекать, что я или другие люди не дерьмо, а он Д'артоньян на белом коне.

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


    Тривиально
    Re: Дополнение
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 10:25
    Оценка: :))
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Здравствуйте, VladD2,


    ГВ>Дополню рассуждения на тему опыта.


    ГВ>Маленькая мышка сожрать большой амбар зерна, то есть "сделает" очень много, но банальным грызуном с примитивной моделью существования она от этого быть не перестанет. Тогда как учёный может жизнь положить на безуспешные исследования, то есть "сделать" в смысле ощутимого результата очень мало, но, возможно, проложить этим дорогу другим.


    ГВ>Так что, при жизни к учёному нужно относиться пренебрежительнее, чем к грызуну?


    Дак учёный сожрёт 100000 амбаров, и ещё попросит
    Re: Кстати
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 10:25
    Оценка: +1
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Здравствуйте, VladD2,


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


    ГВ>

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

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


    Он считается некорректным, потому что со сслыкой на опыт невозможно спорить по причине того, что опыт у всех разный.
    Re[4]: Система исчисления
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 10:29
    Оценка:
    Здравствуйте, minorlogic, Вы писали:

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


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


    M>>>Известно , что счет удобнее вести в 12 рмчной системе исчесления , но пользуемся мы 10 ричной ..


    FDS>>Это откуда это известно. Мне вот говорили, что лучшая система исчисления — с основанием с числом e , так и не знаю почему


    M>Были такие исследования, источник не помню. но вкратце таблица умножения намного проще.


    M>12 делится без остатка на 2 , 3, 4, 6, в отличие от 10 который делится на 2 и 5. Помните как легко делить на 2 и на 5 различные числа в 10 ричной системе .


    Тогда давайте 30-ричную 30=2*3*5 или 210-ричную 30*7
    Re[25]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 10:36
    Оценка:
    Здравствуйте, Beam, Вы писали:

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


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


    B>>>В Smalltalk можно написать метод doFirst: doMiddle: doLast:, который решит эту проблему. Перебор коллекции будет осуществляться внутри этого метода, а вот сами операции, которые необходимо выполнить можно передать в качестве параметров.


    I>>В Java можно написать метод


    I>>
    I>>public void doMyCoolIteration(MyCoolMethodHolder holder)
    I>>


    B>Да, я знаю о такой возможности. Я могу сказать одно — ЭТО НЕ УДОБНО. По следующим причинам:

    B>1. для каждого такого метода Вам придется описать свой интерфейс (а их может быть очень много)
    B>2. затруднено использование локальных переменных класса в котором используется этот метод, т.к.
    B>в анонимный класс можно передавать только final переменные. Это тоже обходится (достаточно коряво)
    B>3. все это — достаточно редко используемая техника для Java, многие будут спотыкаться при чтении этого кода, а для Smalltalk же это обычная техника

    Не знаю, как для Явы, а для C# — это нормально.

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


    I>>Читабельность в данном случае, ИМХО, зависит только от того, на чем читатель привык писать.


    B>Скажу за себя. Я могу написать этот код и на Java и на Smalltalk, но понятнее мне данный код Smalltalk.

    B>Хотя бы потому что мне не нужно создавать анонимный класс.

    Ну, не только же Ява на свете есть.

    I>>Что-то, возможно, в Java и невозможно из-за отсутствия closures, но только не то, что было приведено в качестве примера.


    B>Я имел ввиду, что в случаях, аналогичных описанному выше, на Java ИМХО невозможно написание одновременно легко читаемого и повторно используемого кода. Т.к. появляются дополнительные синтаксические конструкции, которые нужны лишь для обхода ограничений языка.




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


    Не так уж оно и затрудняется: это уже действительно от привычки зависит
    Re[25]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 10:40
    Оценка: -1
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


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


    ANS>Всё, на эту тему отвечаю в последний раз: механизм возврата подобен механизму исключений
    Автор: Andrei N.Sobchuck
    Дата: 06.09.06
    . И механизм "учитывания" такой же — вставить finaly при надобности.


    ANS>Кстати, в ST есть два способа реакции: ensure:, который вызывается всегда и аналог finaly, и ifCurtailed: который вызывается только если произошло исключение и аналог ловлению любого исключения, некоей обработки, и пробрасывания исключения дальше, только само исключение при этом недоступно. Удобно если нужно обработать факт сбой, а что за сбой не важно.


    Вы меня не поняли. Я говорю о том, что если исключение не было учтено, то это значит, что не была учтена ошибочная ситуация. А тут мы можем не учесть просто некоторое штатное поведение алгоритма. Просто то, что эта возможность используется как штатная работа является не безопасной. Тут уже сторонники SmallTalk уже несколько раз говорили про небезопасность исключений, а тут всё похуже будет.
    Re[9]: Насколько важен синтаксис языка?
    От: RustM Россия  
    Дата: 06.09.06 11:01
    Оценка: +2
    Здравствуйте, night beast, Вы писали:

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


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


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


    NB>если он тот, кто я думаю, то кого попало (без причины) он дерьмом не обливает.


    И что, это даёт какое то моральное право обливать дерьмом?
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    Re[22]: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 06.09.06 11:09
    Оценка: 62 (7) +1 -1
    Здравствуйте, FDSC, Вы писали:

    FDS>Я уже говорил, что грабли здесь появляются из-за того, что этими блоками можно слишком легко манипулировать — в частности, передавать в другую функцию. Я даже сказал где-то, что если это запретить (их передачу в качестве параметров), то возможность довольно интересная получится.


    Если Вы запретите передачу блоков в качестве параметров Вы потеряете их всю мощь.

    Как я Вас понял, сомнения Ваши заключаются в том, что метод в который передан блок при выполнении передаст управление неизвестно куда.
    Но сам метод никуда не передает выполнение. Он лишь выполняет блок кода, который ему указали. Т.е. методу абсолютно все равно что Вы там делаете в блоке кода — просто вычисления или передачу управления.

    Давайте посмотрим на код Java и Smalltalk.

    // Java
    int method(){
        int result;
        if (a < 5){
            result := 8;
        } else {
            result := 10;
        }
        return result;
    }


    "Smalltalk"
    method
        | result |
        (a < 5) 
            ifTrue: [result := 8]
            ifFalse: [result := 10].
        ^result


    Вот код с возвратами

    // Java
    int method(){
        int result;
        if (a < 5){
            return 8;
        } else {
            return 10;
        }
    }


    "Smalltalk"
    method
        | result |
        (a < 5) 
            ifTrue: [^8].
            ifFalse: [^10].


    Поведение приведенного выше кода абсолютно идентично.

    Да, проблема может возникнуть, если переданный блок кода используется для вычислений, которые затем используются для работы метода.
    Проведем эксперимент. Есть у класс Коллекция метод select с параметром-блоком кода. Этот метод пробегает по всей коллекции, для каждого элемента вычисляет блок, и если значение true, добавляет этот элемент в коллекцию-результат.

    method
        | result |
        result := #(1 2 3 4 5) select: [:each | each > 3].        "результат #(4 5)"
        ^result size    "Возврат из метода со значением 2"


    Этот метод ожидает, что блок можно выполнить и получить результат. Т.е. он не предполагает, что будет из блока передано управление.
    А мы вот нарушим это правило. Я так понимаю, Вы этого и опасаетесь.

    method
        | result |
        #(1 2 3 4 5) select: [:each | ^10]        "результат #(4 5)"
        ^result size    "Не дойдем сюда никогда"


    При выполнении этого кода произодет выход из методоа со значением 10.
    Сделаем то же самое на Java.

    int method(){
        ArrayList result = new ArrayList();
        for (int elem=1; elem<=5; elem++) {
            boolean cond = elem > 3;        // специально выделил отдельную переменную - это "наш блок кода"
            if (cond)
                result.add(elem);
        }
        return result.size();        "результат 2"
    }


    int method(){
        ArrayList result = new ArrayList();
        for (int elem=1; elem<=5; elem++) {
            return 10;        // результат 10        - заменили старый блок кода на новый, теперь здесь уже имеется возврат из метода
            if (elem > 3)
                result.add(elem);
        }
        return result.size();    // сюда не попадем
    }


    Как видите, поведение кода одинаковое, передаем мы блоки в качестве параметров или нет.
    А вот то, что в середине цикла написано return (что тоже самое, что в select поставить ^) — это уже логическая ошибка.
    Но сами блоки кода такие ошибки не создают, ведь вы сами формируете блок, который должен быть выполнен.

    Извините, если длинно написал... Это все из-за примеров.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[21]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 06.09.06 11:19
    Оценка:
    Здравствуйте, FDSC, Вы писали:

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


    ANS>>Ран-тайм исключение.


    FDS>А ведь это можно проверить статически...


    Проблема останова. Подсказка: если бы это можно было проверить статически, то программы не нужно было бы запускать
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[13]: Насколько важен синтаксис языка?
    От: Turtle.BAZON.Group  
    Дата: 06.09.06 11:30
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS>Можете дать какую-нидуь ссылку на Лисп (компилятор и, хотя бы, стандарт, а лучше книгу на русском), а то у меня от поиска в интернете крышу сносит


    Интерпертатор и среда Emacs с настроенным SLIME (Superior Lisp Interaction Mode for Emacs)
    Почитать Для начала, правда, на инглише, зато все понятно.
    Если проникнешься, то потом ищи PCL (Practical Common Lisp) и OnLisp. Если захочешь более формальное описание, то ищи HyperSpec. В html его бесплатно отдают.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[6]: Оффтоп о преподавателях
    От: Programmierer AG  
    Дата: 06.09.06 11:31
    Оценка: +12 -1
    trophim wrote:
    > З.Ы. Нам в университете както преподаватель сказал: пролог лучше не учите — голову сломаете.
    Это не преподаватель, это вредитель какой-то. Благодаря таким наше
    образование катится известно куда. Видел вчера книгу в магазине, явно
    вот такие отечественные преподаватели писали, — "Основы алгоритмизация и
    программирования в среде VBA". Вы себе можете представить такого зверя:
    "алгоритмизация в среде VBA"? Вот получает человек представление о
    программировании на таком курсе, а рынок — нехватку квалифицированных
    кадров, РСДН — рассуждения о расстоянии от мэйнстрима до нормальных
    инструментов и т.д.
    Posted via RSDN NNTP Server 2.0
    Re[23]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 11:32
    Оценка:
    Здравствуйте, Beam, Вы писали:


    B>
    B>int method(){
    B>    ArrayList result = new ArrayList();
    B>    for (int elem=1; elem<=5; elem++) {
    B>        return 10;        // результат 10        - заменили старый блок кода на новый, теперь здесь уже имеется возврат из метода
    B>        if (elem > 3)
    B>            result.add(elem);
    B>    }
    B>    return result.size();    // сюда не попадем
    B>}
    B>


    B>Как видите, поведение кода одинаковое, передаем мы блоки в качестве параметров или нет.

    B>А вот то, что в середине цикла написано return (что тоже самое, что в select поставить ^) — это уже логическая ошибка.
    B>Но сами блоки кода такие ошибки не создают, ведь вы сами формируете блок, который должен быть выполнен.

    Я сам формирую блок, и могу чего-то не учесть. А что касается выделенного мной фрагмента, то он, по крайней мере в C#, выдаст предупреждение или даже ошибку типа "недостижимый код".

    B>Извините, если длинно написал... Это все из-за примеров.

    Ничего, наоборот, понятнее.
    Re[10]: Насколько важен синтаксис языка?
    От: night beast СССР  
    Дата: 06.09.06 11:34
    Оценка:
    Здравствуйте, RustM, Вы писали:

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


    NB>>если он тот, кто я думаю, то кого попало (без причины) он дерьмом не обливает.


    RM>И что, это даёт какое то моральное право обливать дерьмом?


    а что, у него кто-то это самое право отбирал?
    Re[22]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 11:34
    Оценка: -2
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


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


    ANS>>>Ран-тайм исключение.


    FDS>>А ведь это можно проверить статически...


    ANS>Проблема останова. Подсказка: если бы это можно было проверить статически, то программы не нужно было бы запускать


    Это можно проверить статически. Достаточно просмотреть куда записывается блок кода. Это элементарно
    Re[14]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 11:43
    Оценка: :)
    Здравствуйте, Mirrorer, Вы писали:

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


    FDS>>Можете дать какую-нидуь ссылку на Лисп (компилятор и, хотя бы, стандарт, а лучше книгу на русском), а то у меня от поиска в интернете крышу сносит

    M>Перевод классической Structure and Interpretation Of Computer Programs
    M>здесь

    К сожалению скачать не удалось. Может быть в другой раз попробую, что-то со связью...
    А что это за расширение такое — *.ps?

    M>Интерпретатор

    M>здесь

    M>Там не совсем лисп, а Scheme, диалект лиспа, но общее представление он дает..
    Re[17]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 06.09.06 11:45
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    EB>>Забыл добавить — и, собственно, unchecked exception-ы в плане "вольного выхода из любой точки выражения" значительно более "опасны" — они могут возникнуть в любом месте, а отнюдь не только в value*-методах.


    FDS>Это не значит, что они используются постоянно. Я вот что-то не припомню, что бы у меня в программе были ошибки из-за неверных обработок исключительных ситуаций

    ...хотя unchecked exceptions наверняка используются.

    Вот и я не помню ни одной ошибки (ни у себя, ни у кого-либо другого) из-за того, что в блоке выполнялся нелокальный возврат.
    --
    Бесчастнов Евгений
    Re[14]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 11:45
    Оценка:
    Здравствуйте, Turtle.BAZON.Group, Вы писали:

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


    FDS>>Можете дать какую-нидуь ссылку на Лисп (компилятор и, хотя бы, стандарт, а лучше книгу на русском), а то у меня от поиска в интернете крышу сносит


    TBG>Интерпертатор и среда Emacs с настроенным SLIME (Superior Lisp Interaction Mode for Emacs)


    Ссылка не работает.
    Re[26]: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 06.09.06 11:45
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS>Не знаю, как для Явы, а для C# — это нормально.


    Позвольте в Вами не согласиться.

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

    interface forEachElement {
        void doElement(Object element);
    }
    
    // копирование коллекции
    ArrayList newList = new ArrayList();
    myList.forEach( new forEachElement() {
        void doElement(Object element) {
            newList.add(element);
        }
    }


    Почему не исполюзуются такие конструкции? Ведь с такой техникой можно и ничего не добавлять в язык?
    А потому, что это НЕ УДОБНО, не удобен синтаксис!

    Зато пошли по пути расширения языка. Надоело программистам все время писать код обхода коллекции — в язык добавили foreach. Отлично! Скоро добавим ключевые слова select, collect, detect и т.п.

    В C# все таки отступили от правил — изменили синтаксис.
    В 1.0 там появились делегаты, это уже объект, ссылка на метод. Прогресс, но все равно не удобно.
    Затем в 2.0 — появились анонимные методы. Удобно, но все еще слишком длинно.
    И вот, наконец в 3.0 — лямбда. Вроде должно быть все ок.

    Вот так, долго-долго шли к тому, что появилось очень давно. И, кстати, еще не дошли.

    FDS>Ну, не только же Ява на свете есть.


    Код такой же длины будет и на C#. Получше ситуация будет в С и Pascal за счет поддержки указателей.
    Ведь мы говорим про mainstream, не так ли?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[11]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 11:49
    Оценка: +3 :)
    Здравствуйте, night beast, Вы писали:

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


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


    NB>>>если он тот, кто я думаю, то кого попало (без причины) он дерьмом не обливает.


    RM>>И что, это даёт какое то моральное право обливать дерьмом?


    NB>а что, у него кто-то это самое право отбирал?


    А у него его никогда и небыло
    Re[13]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 06.09.06 11:50
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    ГВ>>Естественно, у самого мэйнстрима, как у неодушевлённого явления, амбиций никаких нет. Я скорее говорю о тех требованиях, которые предъявляются к окружающим ради "следования майнстриму".


    FDS>И что это за требования?


    Здесь
    Автор: Геннадий Васильев
    Дата: 05.09.06
    кое-что накидано.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[15]: Насколько важен синтаксис языка?
    От: Mirrorer  
    Дата: 06.09.06 11:50
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS>К сожалению скачать не удалось. Может быть в другой раз попробую, что-то со связью...

    FDS>А что это за расширение такое — *.ps?
    PostScript.
    Где-то пробегала ссылка на этот же документ в pdf, но что-то не могу найти

    Еще одно введение в Scheme здесь
    Но на английском.
    ... << RSDN@Home 1.1.4 Moby — Slipping Away (MHC Radio Edit)>>
    Re[27]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 11:58
    Оценка:
    Здравствуйте, Beam, Вы писали:

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


    FDS>>Не знаю, как для Явы, а для C# — это нормально.


    B>Позвольте в Вами не согласиться.


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

    B>Ведь можно создать метод forEach и, подставляя нужный кусок кода, бегать по коллекции. Однако, чего-то не видно всего этого в коде.

    B>
    B>interface forEachElement {
    B>    void doElement(Object element);
    B>}
    
    B>// копирование коллекции
    B>ArrayList newList = new ArrayList();
    B>myList.forEach( new forEachElement() {
    B>    void doElement(Object element) {
    B>        newList.add(element);
    B>    }
    B>}
    B>


    B>Почему не исполюзуются такие конструкции? Ведь с такой техникой можно и ничего не добавлять в язык?

    B>А потому, что это НЕ УДОБНО, не удобен синтаксис!

    B>Зато пошли по пути расширения языка. Надоело программистам все время писать код обхода коллекции — в язык добавили foreach. Отлично! Скоро добавим ключевые слова select, collect, detect и т.п.


    B>В C# все таки отступили от правил — изменили синтаксис.

    B>В 1.0 там появились делегаты, это уже объект, ссылка на метод. Прогресс, но все равно не удобно.
    B>Затем в 2.0 — появились анонимные методы. Удобно, но все еще слишком длинно.
    B>И вот, наконец в 3.0 — лямбда. Вроде должно быть все ок.

    B>Вот так, долго-долго шли к тому, что появилось очень давно. И, кстати, еще не дошли.


    FDS>>Ну, не только же Ява на свете есть.


    B>Код такой же длины будет и на C#. Получше ситуация будет в С и Pascal за счет поддержки указателей.

    B>Ведь мы говорим про mainstream, не так ли?

    При программировании на Delphi я иногда делал foreach, когда обход был не совсем тривиален, так что ваш аргумент не уместен, по крайней мере, для меня лично. Что касается некоторых тривиальных операций, то они частенько и без foreach занимают несколько секунд. Там, где случаи посложней иногда такой метод и не напишешь
    Re[18]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 06.09.06 11:59
    Оценка:
    Здравствуйте, FDSC, Вы писали:

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


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



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

    EB>>Ну не получается . Ни у меня, ни у кого другого, использующего Smalltalk (замечу — именно использующего). Что мы не так делаем?

    FDS>Вы уверены?

    Да. Если бы это вызывало хоть какую-нибудь проблему (с проектированием, с пониманием, с дебагом или с чем-то другим) — я бы скорее всего об этом услышал. Потому что блоки — это базовая фича Smalltalk и присутствует во всех диалектах.

    FDS>Но согласитесь, VladD2 привёл классный пример,

    Не соглашусь. Ничего особенно классного в этом примере я не вижу (кстати, по хорошему бы надо бы написать "return" вместо "goto"). Возможно, в Nemerle это и создаёт какие-то проблемы (сам я Nemerle не знаю, поэтому судить не могу), но в Smalltalk — нет.

    FDS>кто даст гарантию, что какой-нибудь "умник" так не сделает

    Как "так"?
    --
    Бесчастнов Евгений
    Re[18]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 11:59
    Оценка: +1
    Здравствуйте, Eugene Beschastnov, Вы писали:

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


    EB>>>Забыл добавить — и, собственно, unchecked exception-ы в плане "вольного выхода из любой точки выражения" значительно более "опасны" — они могут возникнуть в любом месте, а отнюдь не только в value*-методах.


    FDS>>Это не значит, что они используются постоянно. Я вот что-то не припомню, что бы у меня в программе были ошибки из-за неверных обработок исключительных ситуаций

    EB>...хотя unchecked exceptions наверняка используются.

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


    Видимо, каждый вибирает тот язык, который ему более подходит
    Re[16]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 12:03
    Оценка:
    Здравствуйте, Mirrorer, Вы писали:

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


    FDS>>К сожалению скачать не удалось. Может быть в другой раз попробую, что-то со связью...

    FDS>>А что это за расширение такое — *.ps?
    M>PostScript.
    M>Где-то пробегала ссылка на этот же документ в pdf, но что-то не могу найти

    M>Еще одно введение в Scheme здесь

    M>Но на английском.

    Ещё одно но, там больше полусотни файлов...
    Re[19]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 06.09.06 12:05
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS>Видимо, каждый вибирает тот язык, который ему более подходит


    Не могу не согласиться
    --
    Бесчастнов Евгений
    Re[19]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 12:05
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

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


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


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



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

    EB>>>Ну не получается . Ни у меня, ни у кого другого, использующего Smalltalk (замечу — именно использующего). Что мы не так делаем?

    FDS>>Вы уверены?

    EB>Да. Если бы это вызывало хоть какую-нибудь проблему (с проектированием, с пониманием, с дебагом или с чем-то другим) — я бы скорее всего об этом услышал. Потому что блоки — это базовая фича Smalltalk и присутствует во всех диалектах.

    FDS>>Но согласитесь, VladD2 привёл классный пример,

    EB>Не соглашусь. Ничего особенно классного в этом примере я не вижу (кстати, по хорошему бы надо бы написать "return" вместо "goto"). Возможно, в Nemerle это и создаёт какие-то проблемы (сам я Nemerle не знаю, поэтому судить не могу), но в Smalltalk — нет.

    Насколько я понимаю, ни в одном современном языке программирования так написать нельзя. Что касается return, то тут по семантике именно goto, потому что это не SmallTalk.

    FDS>>кто даст гарантию, что какой-нибудь "умник" так не сделает

    EB>Как "так"?

    Как сделал VladD2
    Re: Дополнение
    От: Дарней Россия  
    Дата: 06.09.06 12:11
    Оценка: -1
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Маленькая мышка сожрать большой амбар зерна, то есть "сделает" очень много, но банальным грызуном с примитивной моделью существования она от этого быть не перестанет. Тогда как учёный может жизнь положить на безуспешные исследования, то есть "сделать" в смысле ощутимого результата очень мало, но, возможно, проложить этим дорогу другим.


    Многие "ученые" по модели существования от этой мышки ничем не отличаются. Только сжирают они не зерно, а гранты.
    И пользы от них — столько же, сколько от пресловутой мышки. А вот вреда — намного больше
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[15]: Насколько важен синтаксис языка?
    От: Lazy Cjow Rhrr Россия lj://_lcr_
    Дата: 06.09.06 12:20
    Оценка: +2
    FDSC,

    Это всё, а также многое другое _неоднократно_ летало в соседнем форуме под названием "Декларативное программирование".
    quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
    Re[28]: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 06.09.06 12:26
    Оценка: +3
    Здравствуйте, FDSC, Вы писали:

    FDS>При программировании на Delphi я иногда делал foreach, когда обход был не совсем тривиален, так что ваш аргумент не уместен, по крайней мере, для меня лично.


    Про какой конкретно аргумент Вы говорите?

    Скажу так:
    1. Closure — это ОЧЕНЬ УДОБНО. Они улучшают читаемость кода и его повторное использование.
    2. На современных mainstream языках можно сделать в каком-либо виде аналог closures.
    3. В большинстве таких аналогов появляется значительный синтаксический оверхэд, а это приводит:
    — к отказу от использования closures в этих языках, либо
    — использованию closures и одновременному ухудшению читабельности кода (т.е. потери одного из преимуществ)

    Указанных проблем нет в Lisp, Smalltalk, Ruby, и др.
    Возможно скоро не будет этих проблем в C#

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


    При любом дублировании кода (даже набор которого длится несколько секунд) вероятность ошибки возрастает.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[11]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 06.09.06 12:59
    Оценка: +2 -1
    Здравствуйте, Дарней, Вы писали:

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

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

    По какому ещё делу? Нет никакой связи между мощностью Lisp и волнами стартапов. Нет и быть не может. Мощность Lisp — это характеристика инструмента. Чтобы возникла "волна стартапов" нужно много чего, кроме самого инструмента. Если ты думаешь, что раз нет волны, то и преимущества Lisp "высосаны из пальца" — разубеждать не буду.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[12]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 06.09.06 13:18
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Хм. А как что же их тогда объявлять? Или ты предлагаешь вообще их не объявлять? Последнее приводит к ошибкам. Это натуральные грабли. Одна опечатка и ищи ошибку часами.


    Не заметил, опять?
    Re[16]: Насколько важен синтаксис языка?
    От: Andrei Gorlov  
    Дата: 06.09.06 13:27
    Оценка: 6 (3)
    Здравствуйте, Mirrorer, Вы писали:


    M>Где-то пробегала ссылка на этот же документ в pdf, но что-то не могу найти


    Достаточно поменять расширение в ссылке:

    http://newstar.rinet.ru/~goga/sicp/sicp.<b>pdf</b>
    Re[29]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 14:09
    Оценка:
    Здравствуйте, Beam, Вы писали:

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


    FDS>>При программировании на Delphi я иногда делал foreach, когда обход был не совсем тривиален, так что ваш аргумент не уместен, по крайней мере, для меня лично.


    B>Про какой конкретно аргумент Вы говорите?


    B>Скажу так:

    B>1. Closure — это ОЧЕНЬ УДОБНО. Они улучшают читаемость кода и его повторное использование.
    B>2. На современных mainstream языках можно сделать в каком-либо виде аналог closures.
    B>3. В большинстве таких аналогов появляется значительный синтаксический оверхэд, а это приводит:
    B>- к отказу от использования closures в этих языках, либо
    B>- использованию closures и одновременному ухудшению читабельности кода (т.е. потери одного из преимуществ)

    Про третий

    B>Указанных проблем нет в Lisp, Smalltalk, Ruby, и др.

    B>Возможно скоро не будет этих проблем в C#

    Возможно я не понял, что именно удобно

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


    B>При любом дублировании кода (даже набор которого длится несколько секунд) вероятность ошибки возрастает.


    Если речь идёт про тривиальное for (int i = 0; i < object.Length; i++) — то нет. Это, собственно, не дублирование кода. Не считаете же вы дублированием кода вызов одной и той же функции или применение одного и того же оператора
    Re[27]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 06.09.06 14:11
    Оценка: +1
    Здравствуйте, Beam, Вы писали:

    FDS>>Не знаю, как для Явы, а для C# — это нормально.

    B>Позвольте в Вами не согласиться.
    B>Если это нормально, то почему обход коллекции в большинстве случаев производится вручную, т.е. с помощью цикла.
    B>Ведь можно создать метод forEach и, подставляя нужный кусок кода, бегать по коллекции. Однако, чего-то не видно всего этого в коде.

    Смотрим внимательно на List<T>.ForEach(Action<T> action).

    B>Зато пошли по пути расширения языка. Надоело программистам все время писать код обхода коллекции — в язык добавили foreach. Отлично! Скоро добавим ключевые слова select, collect, detect и т.п.


    select точно скоро будет.

    B>В C# все таки отступили от правил — изменили синтаксис.

    B>В 1.0 там появились делегаты, это уже объект, ссылка на метод. Прогресс, но все равно не удобно.
    B>Затем в 2.0 — появились анонимные методы. Удобно, но все еще слишком длинно.
    B>И вот, наконец в 3.0 — лямбда. Вроде должно быть все ок.

    B>Вот так, долго-долго шли к тому, что появилось очень давно. И, кстати, еще не дошли.


    И в чём проблема? Пусть долго, но ведь дошли. В результате мы получили не просто отдельно мэйнсрим, а отдельно лямбды. Мы получили всё вместе. Или и это не устраивает?

    Да и почему собственно долго? C# от роду чуть больше 4-х лет. Когда выйдет C# 3.0 ему будет 5 лет. Это много для языка?
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[29]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 06.09.06 14:11
    Оценка: +1
    Здравствуйте, Beam, Вы писали:

    B>1. Closure — это ОЧЕНЬ УДОБНО. Они улучшают читаемость кода и его повторное использование.


    +1

    B>Возможно скоро не будет этих проблем в C#


    Их уже нет и сейчас. Есть не большой оверхед на напсание delegate вместо fun, но это мелочь.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[12]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 14:12
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

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


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

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

    ГВ>По какому ещё делу? Нет никакой связи между мощностью Lisp и волнами стартапов. Нет и быть не может. Мощность Lisp — это характеристика инструмента. Чтобы возникла "волна стартапов" нужно много чего, кроме самого инструмента. Если ты думаешь, что раз нет волны, то и преимущества Lisp "высосаны из пальца" — разубеждать не буду.


    Что же это за преимущества, которые не дают экономических преимуществ при разработке ПО? И зачем они такие нужны?

    Не уж, раз вы залезли в спор, дак не прекращайте его аргументом "мне стало неинтересно". Лучше скажите, что вы не знаете, что сказать. А если знаете, так сделайте полезное дело — поделитесь знаниями, иначе для чего вообще форум нужен?
    Re[30]: Насколько важен синтаксис языка?
    От: Programmierer AG  
    Дата: 06.09.06 14:13
    Оценка:
    > Если речь идёт про тривиальное for (int i = 0; i < object.Length; i++) — то нет. Это, собственно, не дублирование кода. Не считаете же вы дублированием кода вызов одной и той же функции или применение одного и того же оператора
    Любой паттерн, в котором изменяется незначительная часть — это дублирование.
    Posted via RSDN NNTP Server 2.0
    Re[31]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 14:21
    Оценка: -1
    Здравствуйте, Programmierer AG, Вы писали:


    >> Если речь идёт про тривиальное for (int i = 0; i < object.Length; i++) — то нет. Это, собственно, не дублирование кода. Не считаете же вы дублированием кода вызов одной и той же функции или применение одного и того же оператора

    PA>Любой паттерн, в котором изменяется незначительная часть — это дублирование.

    отлично, расскажите мне тогда, как избавиться от вызовов функций?

    А что, foreach(EnumeratorObject EO in Enumerator) — это не дублирование. Давайте избавимся от дублирования! И каждая программа будет занимать по 5 строчек.
    Re[32]: Насколько важен синтаксис языка?
    От: Programmierer AG  
    Дата: 06.09.06 14:46
    Оценка: +4 :)
    FDSC wrote:
    > PA>Любой паттерн, в котором изменяется незначительная часть — это дублирование.
    > отлично, расскажите мне тогда, как избавиться от вызовов функций?
    Очень просто, если этих вызовов много и они укладываются в некий
    паттерн, этот паттерн выделяется в макрос или функцию высшего порядка.

    > А что, foreach(EnumeratorObject EO in Enumerator) — это не дублирование. Давайте избавимся от дублирования! И каждая программа будет занимать по 5 строчек.


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

    Абстракция — это присвоение имени некой сложной структуре. Языки
    программирования отличаются в наибольшей степени тем, каким объектам
    можно дать имя и каким образом можно комбинировать объекты. То, что в
    языке Foo дублированием не считается, в языке Bar будет дублированием
    просто потому, что Bar позволяет писать на более высоком уровне
    абстракции. Вот, по-вашему, в коде ниже нет дублирования?
    average (container) = sum(container) / num_elements(container);

    Есть! Потому что, например, в языке J можно написать
    average =: sum divided_by num_elements
    Posted via RSDN NNTP Server 2.0
    Re[32]: Насколько важен синтаксис языка?
    От: Programmierer AG  
    Дата: 06.09.06 14:51
    Оценка:
    FDSC wrote:
    > А что, foreach(EnumeratorObject EO in Enumerator) — это не дублирование.
    Кстати, если тело цикла — это просто вызов функции foo, то от
    дублирования избавляются так: iter foo enumerator.
    Posted via RSDN NNTP Server 2.0
    Re[33]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 15:00
    Оценка:
    Здравствуйте, Programmierer AG, Вы писали:

    >> А что, foreach(EnumeratorObject EO in Enumerator) — это не дублирование. Давайте избавимся от дублирования! И каждая программа будет занимать по 5 строчек.


    PA>В приведенном примере я дублирования не вижу. Приведите пример побольше

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

    Ты мне скажи, чем for (int i = 0; i < Enumerator; i++)
    {
    ........
    }

    отличается от foreach(EnumeratorObject EO in Enumerator?

    Или, что for, что foreach — всё равно дублирование? Весь код — это дублирование тогда. Применение знака деления — дублирование. Давайте вместо a = c/b и f = d/b сделаем a, f = c, d / b — и устраним дублирование. Кому это надо?
    Re[34]: Насколько важен синтаксис языка?
    От: Programmierer AG  
    Дата: 06.09.06 15:14
    Оценка: +4
    FDSC wrote:
    >
    > Ты мне скажи, чем for (int i = 0; i < Enumerator; i++)
    > {
    > ........
    > }
    >
    > отличается от foreach(EnumeratorObject EO in Enumerator?
    >
    > Или, что for, что foreach — всё равно дублирование? Весь код — это дублирование тогда. Применение знака деления — дублирование. Давайте вместо a = c/b и f = d/b сделаем a, f = c, d / b — и устраним дублирование. Кому это надо?

    for от foreach отличается созданием переменной int i (а может быть long
    i? или size_t i? а может быть, переменная i уже используется, а потому j
    или k), инициализацией нулем (а может единицей?), проверкой условия i <
    container.size() (а может <= ? а может size()-1? а может не size(), а
    length() или count()?) и наличием инкремента переменной (постинкремента
    или пре-инкремента, это ооочень серьезный вопрос, зайдите в форум C++
    . Видите, как много вопросов? Даже если код пишется на автомате, они
    отнимают одну зиллионную творческой энергии, которую можно было
    потратить лучше. Ну, и являются потенциальным источником ошибок.

    Так что foreach в случае, когда нужно пройтись по всему
    контейнеру
    — однозначно upgrade. Хотя, как я уже написал, не предел
    совершенству, во многих случаях само объявление переменной для элемента
    контейнера (да еще и с типом) — уже дублирование.

    Хао!
    Posted via RSDN NNTP Server 2.0
    Re[11]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 06.09.06 15:38
    Оценка: +1
    Здравствуйте, Mirrorer, Вы писали:

    M>Не совсем уловил мысль..


    Короче, чем сложнее задача, тем сильнее видна разница между регексами и EBDF.

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


    M>Есть подозрение граничащее с уверенностью что то же самое будет и с немерловыми макросами,


    Макросы в отличии от регексов можно использовать в готовом и отлаженном виде. Так что использовать их будут много и часто, а вот писать... Тут, да. Это скорее всего будет удел продвинутых прграммистов. Ну, оно и хорошо. Это все же мирный атом, а такие технологии лучше держать в квалифицированных и отвественных руках.

    M> и с многострадальной лямбдой.


    -1
    Лямбду будет использоваться во всю. Просто нужно время.

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


    Опять -1. Шаблоны используются на право и на лево. Особенно готовые шаблонные классы. Вот метапрограммирование — это другое дело.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[5]: Насколько важен синтаксис языка?
    От: vvotan Россия  
    Дата: 06.09.06 16:06
    Оценка:
    Здравствуйте, FDSC, Вы писали:

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


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



    M>>>Английский

    M>>>I am teacher.
    M>>>Я есть учитель.

    V>>На самом деле "I am a teacher", то есть


    FDS>"Я есть неопределённый экземпляр класса "учитель" "


    Неопределенный это как? Конструктор не вызван?
    --
    Sergey Chadov

    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[31]: Насколько важен синтаксис языка?
    От: Lloyd Россия  
    Дата: 06.09.06 16:30
    Оценка: -2 :))) :))
    Здравствуйте, Programmierer AG, Вы писали:


    >> Если речь идёт про тривиальное for (int i = 0; i < object.Length; i++) — то нет. Это, собственно, не дублирование кода. Не считаете же вы дублированием кода вызов одной и той же функции или применение одного и того же оператора

    PA>Любой паттерн, в котором изменяется незначительная часть — это дублирование.

    Долой пробелы!!!
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[28]: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 06.09.06 17:03
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>select точно скоро будет.


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

    IT>Да и почему собственно долго? C# от роду чуть больше 4-х лет. Когда выйдет C# 3.0 ему будет 5 лет. Это много для языка?


    Добавьте к этому возраст Java и тогда станет видно, что много.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[7]: Оффтоп о преподавателях
    От: trophim Россия  
    Дата: 06.09.06 17:07
    Оценка: +1
    Здравствуйте, Programmierer AG, Вы писали:

    PA>trophim wrote:

    >> З.Ы. Нам в университете както преподаватель сказал: пролог лучше не учите — голову сломаете.
    PA>Это не преподаватель, это вредитель какой-то. Благодаря таким наше
    PA>образование катится известно куда. Видел вчера книгу в магазине, явно
    PA>вот такие отечественные преподаватели писали, — "Основы алгоритмизация и
    PA>программирования в среде VBA". Вы себе можете представить такого зверя:
    PA>"алгоритмизация в среде VBA"? Вот получает человек представление о
    PA>программировании на таком курсе, а рынок — нехватку квалифицированных
    PA>кадров, РСДН — рассуждения о расстоянии от мэйнстрима до нормальных
    PA>инструментов и т.д.

    О, да, вредитель тот еще. Без шуток. И представляете — зав кафедрой.

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

    З.Ы. Усе давно прогнило в королевстве датском... Нет у нас нормального образования в направлении ИТ.
    [EOF]
    Let it be! — Давайте есть пчелу!
    Re[5]: Насколько важен синтаксис языка?
    От: trophim Россия  
    Дата: 06.09.06 17:07
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


    T>>Да фактически каждый новичок отмечает эту особенность синтаксиса смоллтока.


    ANS>Интересно, были ли среди них "новички", знакомящиеся с ST, но еще не знакомых с C/Java/C#?


    Гм, ну, мой поток в университете. Не то чтобы не знакомые с другми языками, но разум был еще не затуманен. Так что для нас тогда и смоллток был почти таким же новым, как C++.

    А вот таких кто изучал ST, но не знал другого языка, конечно же не было (их бы уже под зад выгнали давно).
    [EOF]
    Let it be! — Давайте есть пчелу!
    Re[13]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 06.09.06 17:10
    Оценка: -1
    Здравствуйте, FDSC, Вы писали:

    FDS>Что же это за преимущества, которые не дают экономических преимуществ при разработке ПО?


    Где я отрицал возможность получения экономических преимуществ?
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[6]: I am a teacher - неопределённый экземпляр класса
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 17:18
    Оценка:
    Здравствуйте, vvotan, Вы писали:

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


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


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



    M>>>>Английский

    M>>>>I am teacher.
    M>>>>Я есть учитель.

    V>>>На самом деле "I am a teacher", то есть


    FDS>>"Я есть неопределённый экземпляр класса "учитель" "


    V>Неопределенный это как? Конструктор не вызван?


    Нет, это значит, что он стоит в некоторой коллекции и ничем не выделяется. А вот если бы для него отдельную переменную бы завели, то был бы он "I am the national teacher"
    Re[14]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 06.09.06 17:22
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

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


    FDS>>Что же это за преимущества, которые не дают экономических преимуществ при разработке ПО?


    ГВ>Где я отрицал возможность получения экономических преимуществ?


    Вы сказали, что не будет волны стартапов, а это значит, что нет экономических преимуществ, так как иначе все им бы пользовались. Собственно, вот логика. Если вас логика не устраивает, объясните почему (вы её уже назвали "наивной", но всё же)
    Re[29]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 06.09.06 17:23
    Оценка:
    Здравствуйте, Beam, Вы писали:

    IT>>select точно скоро будет.


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


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

    IT>>Да и почему собственно долго? C# от роду чуть больше 4-х лет. Когда выйдет C# 3.0 ему будет 5 лет. Это много для языка?


    B>Добавьте к этому возраст Java и тогда станет видно, что много.


    Тогда надо добавлять ещё и возраст C++.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[30]: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 06.09.06 17:28
    Оценка: +4 -1
    Здравствуйте, FDSC, Вы писали:

    B>>При любом дублировании кода (даже набор которого длится несколько секунд) вероятность ошибки возрастает.


    FDS>Если речь идёт про тривиальное for (int i = 0; i < object.Length; i++) — то нет. Это, собственно, не дублирование кода. Не считаете же вы дублированием кода вызов одной и той же функции или применение одного и того же оператора


    Возьмем этот тривиальный код:
    for (int i = 0; i < 10; i++) {
        ...    // здесь i не используется
    }


    Что здесь написано? Присвоить переменной i значение 0. Пока i меньше 10, выполняй тело цикла и увеличивай i на единицу. Вы видите, что в теле не используется переменная i, и понимаете, что это конструкция обозначает повторение 10 раз тела цикла.

    Другой код.
    timesRepeat(10) {
        ...
    }

    Что написано здесь: повторить тело цикла 10 раз

    Это и есть повышение уровня абстракции и повышение читабельности.

    Где можно ошибиться при наборе timesRepeat(10): в слове timesRepeat (синтаксическая ошибка) или в числе 10 (логическая).
    А теперь посмотрите на кучу мест, где можно совершить ошибки в for (да, я прекрасно понимаю, что набивание таких конструкций доведено до автоматизма, но все же).

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

    FDS>Возможно я не понял, что именно удобно


    Удобно то, что можно не меняя язык вводить такие конструкции как timesRepeat(number) { }
    Разве Вы не пользовались бы таким оператором?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[5]: Система исчисления
    От: minorlogic Украина  
    Дата: 06.09.06 17:49
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS>Тогда давайте 30-ричную 30=2*3*5 или 210-ричную 30*7


    Таблицу умножения тяжело запомнить , 12 оптимально.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Ищу работу, 3D, SLAM, computer graphics/vision.
    Re: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 06.09.06 18:15
    Оценка: +1
    Здравствуйте, Курилка, Вы писали:

    К>Так вот — хотелось бы рассмотреть вопрос: насколько синтаксис языка определяет его удобство для использования?


    Прочитал я сейчас определение синтаксиса (естественного языка) и осознал, что в зону его влияния не входят слова языка (т.е. лексика), а входят лишь правила построения связной речи.

    Может в этом и есть секрет таких языков как Lisp, Smalltalk, J, ... (продолжите список)? Ведь в них как раз и имеется минимальный синтаксис, который:

    Я не силен в науке о русском языке (кстати, как называется?), так что поправьте если что.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[15]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 06.09.06 18:31
    Оценка: +3 -1
    Здравствуйте, FDSC, Вы писали:

    FDS>>>Что же это за преимущества, которые не дают экономических преимуществ при разработке ПО?

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

    Окстись! Слово-то такое "Lisp" слышали не все, а пользоваться им умеют и не боятся ещё более редкие представители. Из этих редких единиц ещё более редкие единицы действительно будут стартапить. Не все же спят и видят, как бы заняться собственным стартапом. Откуда тут "волна" стартапов выпрыгнет?

    FDS>Собственно, вот логика. Если вас логика не устраивает, объясните почему (вы её уже назвали "наивной", но всё же)


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

    На основании этих упрощённых рассуждений делается вывод о мнимости качеств Lisp, SmallTalk и прочих подобных. Ну не ерунда?
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[13]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 06.09.06 19:26
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS>Можете дать какую-нидуь ссылку на Лисп (компилятор и, хотя бы, стандарт, а лучше книгу на русском), а то у меня от поиска в интернете крышу сносит


    Полный букет: http://www.franz.com/

    Скачай Allegro CL, там неплохая документация.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[2]: Кстати
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 06.09.06 19:32
    Оценка: :)))
    Здравствуйте, FDSC, Вы писали:

    FDS>Он считается некорректным, потому что со сслыкой на опыт невозможно спорить по причине того, что опыт у всех разный.


    Не подсказывай.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[14]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 06.09.06 21:34
    Оценка: +1
    Здравствуйте, Mirrorer, Вы писали:

    M>Там не совсем лисп, а Scheme, диалект лиспа, но общее представление он дает..


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

    VD>>Хм. А как что же их тогда объявлять? Или ты предлагаешь вообще их не объявлять? Последнее приводит к ошибкам. Это натуральные грабли. Одна опечатка и ищи ошибку часами.


    FR>Не заметил, опять?


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

    EB>Ну не получается . Ни у меня, ни у кого другого, использующего Smalltalk (замечу — именно использующего). Что мы не так делаем?


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

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


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

    FDS>Можете дать какую-нидуь ссылку на Лисп (компилятор и, хотя бы, стандарт, а лучше книгу на русском), а то у меня от поиска в интернете крышу сносит


    Хороших книг по Лиспу я вообще не знаю. Читал пару, например, но обе мне показались редкосным дерьмом. Люди просто неумеют донести мысли до других. Есть неплохие материалы на www.softcraft.ru (если не ошибся с срдесом).

    FDS>Да, например в мае на C#, правда она у меня динамически компилировалась прямо в runtime в зависимости от ввода пользователя. Это было ужасно и я не знаю, как это сделать лучше... Вообще, с генерацией кода у меня всё плохо, но по ней совершенно нет ничего понятно написанного.


    Вот макросы — это способ сделать это не просто лучше, а почти идиально. Правда в компайлтайме, но все же.

    FDS>С макросами не так всё — я просто не понимаю как так можно что-то писать и я не вижу нормальной (строгой) документации по макросам.


    Документация есть. Зайти да nemerle.org или просто прочти статьи на нашем стайте.

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


    Давай конкретно. Что не понятно?

    FDS>Я имею ввиду модификатор mutable. Насколько я понимаю, без него переменная — не переменная, а константа (точнее readonly поле).


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

    FDS>"Одна опечатка и ищи ошибку часами." — я не поклонник скриптовых языков, но когда на них пишу таких ошибок почему-то не допускаю (именно в скриптах ). Уже много о них читал и всё время удивлялся.


    Значит мало пишешь. К тому же учити, что надо учитывать что писать можешь не только ты. А искать опечатки за другими не боагодарная работа. А ведь ее так легко переложить на компилятор.

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


    Пожалуйста. По убыванию "прикольности".

    1. Сопоставление с образцом (в том числе и в foreach) и алгеброические типы (variant-ы).
    2. Локальные функции.
    3. Лямбды.
    4. Вывод типов.
    5. Кортэжи (tuples).
    6. Готовые макросы (например, чтобы объявить свойство можно просто пометить поле атрибутом Accessor).
    7. Отсуствие граблей (например, оператора as).
    8. Частичное применение функций и операторов.
    9. Сплайсебл-строки.
    10. Собственные макросы.
    11. Бесплатная концевая рекурсия.
    12. Краткий синтаксис работы со спискам и встроенные в зяык списки.
    Пунктов еще много, но уже этих более чем достаточно. Да если честно.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[23]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 00:38
    Оценка:
    Здравствуйте, Beam, Вы писали:

    B>Давайте поговорим о повторном использовании и читаемости кода.


    Давайте, и начнем с принципов структурного программирования. ОК?
    Что ты о них думаешь?

    Примеры поскипаны.

    B>На мой взгляд этот код читается легче, чем на Java.


    Это не те примеры. На мой взгляд они читаются не лучше чем примеры на Яве, но дело не в этом.

    Дело в том, что мы говорили о другом. Мы говорили о возможности создания программ в которых функция не обязательно возвращает управление после вызова и в кторых выражения могут не врнуть результат. Это называется противоречием принципам структурного программирования и многие годы сильно не приветсвуется более-менее серьезными командами программистов.

    B> Да и возможности повторного использования у него выше.


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

    B>Все это возможно в Smalltalk и невозможно в Java благодаря наличию блоков кода (BlockClosure).


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

    B>Радует, что в C# добавили такие возможности (я говорю про лямбду в C# 3),


    Анонимные методы из C# 2.0 немногим хуже. Они не умеют вывоить типы и чуть-чуть более громоздки, но по слити это тоже самое.

    B> а там глядишь и Java подтянется в этом плане.


    Возможно. Хотя в Яве уже есть анонимные классы и вложенные класы которые тоже решают похожие задачи. Не так красиво, но решают.

    B>Только интересно, примет ли это все mainstream? Наверное ДА — вон сколько шума вокруг LINQ.


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

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


    Какие ключевые слова? Селект? Это анлог фунции.

    Что до дямбд, то в C# 3.0
    x => x * 2

    ==
    delegate (int x){ return x * 2; }

    да, первый вариант короче, но это не более чем синтаксическое сокращение. По сути они равнозначны.

    B>Добавьте к этому возраст Java и тогда станет видно, что много.


    Ага. А к Яве добавим всех его наследников. Это тупиковый путь.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[23]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 00:38
    Оценка: +2
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


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


    ANS>Блин, реально не пойму о каком непредсказуемом пути идёт реч.


    Это плохо. Значит опыт 70-ых годов прошлого столетия прошел мимо тебя.

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


    Ага. Это нарушает структрированность кода и протеворечит предположениям тех кто читает код.

    ANS> То есть код работает так же как и код, который ты привёл.


    Я привел? Это ты про что?

    ANS> Это указано в спецификации метода. Если тебя пугает то, что метод делает не то, что должен делать, то не стоит пользоваться ни одним ЯП вообще.


    Меня пугает предположение о том, что функция может не вернуть управления и то, что в середине выражения (суть которого вычисление результата) может быть возврат управления, что приводит к тому, что выражение потнетциально может быть не вычисленно.

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

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


    ANS>В ST которые реализовывали для JVM и .Net ВМ нелокальный возврат реализовывали через механизм исключений. То есть, этот код эквивалентен созданию своего уникального класса исключения, определению блока try..catch, который ловит это уникальное исключение _перед_ вызовом метода с блоком, и бросанию этого исключения при активации блока.


    ОК. Подойди к любому квалифицированному C#- или Java-программисту или архитектуру и проконсультируйся у него по пводу того что он думает об исползовании исключений и их обработки для реализации логики приложения. Уверяю тебя стандартная реакция будет "руки (мягко говоря) надо отрывать тем уродом (тоже мягко говоря) которые это делают".

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

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

    ANS> Плюс ошибка при попытке бросить исключение, если управление уже вышло из нашего уникального try..catch.


    То есть, создали проблему и успешно боримся с ней?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[10]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 00:38
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>То что там окна MFC'шные не обязательно значит что среда написана на C++. Как пример есть биндинг MFC на питон, и на питоне можно писать используя MFC. И даже есть IDE написаное на питоне используя MFC — PythonWin.


    Да, да. Шрирлиц все равно скажет, что апельсины приносил...

    Не надо много умностей. Мы слышим от фанатов Смолток о том, что среды этого языка написаны на Смолток, а на повреку там МФЦ-шный код. Что тут умничать? Все же очевидно.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[23]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 00:38
    Оценка:
    Здравствуйте, Beam, Вы писали:

    Объясню почему я не согласен с этим сообщением, в отличии от толп товаришей.

    Это сообщение подменяет тему. Примеры из него невинныи и впоросов не вызвают. Но цель его доказать невреную посылку.

    Речь шао не о блоках кода и их полезности, а о неструкторной передаче управления.

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

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

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


    ANS>Ран-тайм исключение.


    И тебе это нравится?

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

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


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

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


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

    EB>Кстати, замечу, что этот exception бросается, только если именно нельзя вернуться. При этом контекст, где был определён блок, не теряется и, если в блоке нет оператора "^", то он замечательно и корректно выполняется.


    Блок без оператора "^" является классической Лямбдой с лексическим замыканием и присутствует во многих языках (в том же C#, например). А с ним является граблями ждущими своего часа.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[19]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 00:38
    Оценка: +1
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>Да. Если бы это вызывало хоть какую-нибудь проблему (с проектированием, с пониманием, с дебагом или с чем-то другим) — я бы скорее всего об этом услышал.


    Ты? Ты упорно не хочешь слышать то, что до тебя пытются донести и еще надменно демонстриуешь неуважительное отношение к оппонентам.

    EB>Не соглашусь. Ничего особенно классного в этом примере я не вижу (кстати, по хорошему бы надо бы написать "return" вместо "goto"). Возможно, в Nemerle это и создаёт какие-то проблемы (сам я Nemerle не знаю, поэтому судить не могу), но в Smalltalk — нет.


    Ага. Создаются. Открою тебе пару секретов. До одного из них ты мог бы догадаться и сам. Return в Немерле является структрынм оператором и не может врнуть управление вне рамок струтуры кода. Ретурн в фнукции выйдет именно из нее, а не из функции где та была объявлена.

    Второе же откровение, которое тебе будет тяжелее понять — это то что в Немерле в общем-то нет return. return в этом языке — это макрос эмулирующий поведение оного в C#. Этот макрос нуно специальным образом импортировать. Сам же Немерле (точнее его авторы) пропагандируют вычисления вместо передачи управления. Функция в Немерле — это выражение! Ты вообще не можешь передать управление. Ты можешь только ветвить вычисления. Таким образом не то что невозможно выйти из выражения не вернув значени, но вообще невозможно передать управление. Это приводит к упрощению читения кода. Ты можешь быть уверен, что выражение вернет результат и что управление не перескачит куда попало.

    FDS>>кто даст гарантию, что какой-нибудь "умник" так не сделает

    EB>Как "так"?

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

    EB>В Smalltalk нет break, continue и goto .


    ^ пожалуй будет по круче чем break и continue. Вот с goto она успешно поконкурирует, только с С-шным дальним goto, так как goto в C# не позволят выходить из функций.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[11]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 00:38
    Оценка: +1 :)))
    Здравствуйте, night beast, Вы писали:

    NB>а что, у него кто-то это самое право отбирал?


    Судя потому что он в бане...
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[16]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 07.09.06 02:54
    Оценка: +1 -2 :)))
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Окстись! Слово-то такое "Lisp" слышали не все, а пользоваться им умеют и не боятся ещё более редкие представители. Из этих редких единиц ещё более редкие единицы действительно будут стартапить. Не все же спят и видят, как бы заняться собственным стартапом. Откуда тут "волна" стартапов выпрыгнет?


    Ты опять ставишь всё с ног на голову. Начнем с того, что стартапят далеко не "редкие единицы". Из хороших программистов 99,9% хотя бы раз задумывалось об открытии своего дела, задолбавшись исполнять команды идиота-руководителя А большинство из них не только думает, но и делает — иначе они не были бы хорошими программистами.
    Да, хороших программистов мало. Но у плохих всё равно нет никаких шансов поднять свой стартап, поэтому их не стоит вообще принимать в рассмотрение.
    Далее. Неважно, знают они Лисп, Смоллток или Хаскелл изначально. Любой хороший программист выбирает инструмент под задачу, и проводит предварительные исследования, эксперименты, прежде чем начать реальную работу. Писать на языке Х "потому что я его уже хорошо знаю" — это прерогатива плохих программистов. Если инструмент дает реальные преимущества — значит, выберут именно его. И неважно, требует он предварительного привыкания или нет — тем более что для хорошего программиста это не составит никаких проблем, не так ли?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[14]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 07.09.06 03:02
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Хороших книг по Лиспу я вообще не знаю. Читал пару, например, но обе мне показались редкосным дерьмом.


    попробуй вот эту посмотреть Мир Лиспа
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[12]: Насколько важен синтаксис языка?
    От: night beast СССР  
    Дата: 07.09.06 04:07
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    NB>>а что, у него кто-то это самое право отбирал?


    VD>Судя потому что он в бане...


    своеобразное решение
    а если он под анонимом пишет?
    Re[20]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 07.09.06 05:25
    Оценка: +2
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


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


    ANS>Ран-тайм исключение.


    Не вижу тогда практического смысла в этом (в нелокальных возвратах из блока) и блоки наружу передавать становится проблемно — каждый раз добавлять обработку исключений?
    Re[24]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 07.09.06 05:41
    Оценка: -1
    Здравствуйте, VladD2, Вы писали:

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


    VD>Объясню почему я не согласен с этим сообщением, в отличии от толп товаришей.


    VD>Это сообщение подменяет тему. Примеры из него невинныи и впоросов не вызвают. Но цель его доказать невреную посылку.


    VD>Речь шао не о блоках кода и их полезности, а о неструкторной передаче управления.


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


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


    http://www.rsdn.ru/Forum/Message.aspx?mid=2094854&amp;only=1
    Автор: Eugene Beschastnov
    Дата: 05.09.06
    --
    Бесчастнов Евгений
    Re[18]: Насколько важен синтаксис языка?
    От: Lazy Cjow Rhrr Россия lj://_lcr_
    Дата: 07.09.06 05:48
    Оценка: :)
    VladD2,

    EB>>Что мы не так делаем?


    VD>Не делаете полезной раоты в составе более менее большой команды? Я угадал?


    Довольно неуклюжий переезд на личность.
    quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
    Re[17]: Насколько важен синтаксис языка?
    От: Lazy Cjow Rhrr Россия lj://_lcr_
    Дата: 07.09.06 05:48
    Оценка: +1 -1 :)))
    Дарней,

    Д>Ты опять ставишь всё с ног на голову. Начнем с того, что стартапят далеко не "редкие единицы". Из хороших программистов 99,9% хотя бы раз задумывалось об открытии своего дела, задолбавшись исполнять команды идиота-руководителя А большинство из них не только думает, но и делает — иначе они не были бы хорошими программистами.

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

    Ещё раз прочитай выделенное
    quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
    Re[19]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 07.09.06 05:51
    Оценка: +1 :)
    Здравствуйте, VladD2, Вы писали:

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


    VD>А я вижу что уже не хочу читить написанный тобой код, так как он непредсказуем (не структурирован).


    Если не знать основы языка (а поведение блоков — это основы) — то да, непредсказуем. То же самое можно сказать про код, в котором выскакивают unchecked exception-ы — для человека, не знающего поведения exception-ов.


    Вообще, на блоках в Smalltalk сделано практически всё — работа с коллекциями, exception-ы, параллельные процессы,и т.д. и т.п. И я не видел ни одной жалобы на непонятность поведения блоков — в том числе и от новичков. Разумеется, "теоретические" рассуждения на RSDN от людей, не знающих Smalltalk, не в счёт.
    --
    Бесчастнов Евгений
    Re[17]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 07.09.06 05:53
    Оценка: 1 (1) +1 :))) :))
    Здравствуйте, VladD2, Вы писали:

    VD>Блок без оператора "^" является классической Лямбдой с лексическим замыканием и присутствует во многих языках (в том же C#, например). А с ним является граблями ждущими своего часа.


    25 лет ожиданий — слегка слишком долго для граблей
    --
    Бесчастнов Евгений
    Re[18]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 07.09.06 05:57
    Оценка: +1
    Здравствуйте, VladD2, Вы писали:

    EB>>Ну не получается . Ни у меня, ни у кого другого, использующего Smalltalk (замечу — именно использующего). Что мы не так делаем?


    VD>Не делаете полезной раоты в составе более менее большой команды? Я угадал?


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


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[20]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 07.09.06 06:16
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    EB>>Не соглашусь. Ничего особенно классного в этом примере я не вижу (кстати, по хорошему бы надо бы написать "return" вместо "goto"). Возможно, в Nemerle это и создаёт какие-то проблемы (сам я Nemerle не знаю, поэтому судить не могу), но в Smalltalk — нет.


    VD>Ага. Создаются. Открою тебе пару секретов. До одного из них ты мог бы догадаться и сам. Return в Немерле является структрынм оператором и не может врнуть управление вне рамок струтуры кода. Ретурн в фнукции выйдет именно из нее, а не из функции где та была объявлена.


    VD>Второе же откровение, которое тебе будет тяжелее понять — это то что в Немерле в общем-то нет return. return в этом языке — это макрос эмулирующий поведение оного в C#. Этот макрос нуно специальным образом импортировать.

    Интересная особенность реализации. Но ты не находишь, что эта твоя фраза противоречит предыдущему абзацу? Раз return является макросом — значит его можно переписать и изменить ему поведение.

    VD>Сам же Немерле (точнее его авторы) пропагандируют вычисления вместо передачи управления. Функция в Немерле — это выражение! Ты вообще не можешь передать управление. Ты можешь только ветвить вычисления. Таким образом не то что невозможно выйти из выражения не вернув значени, но вообще невозможно передать управление. Это приводит к упрощению читения кода. Ты можешь быть уверен, что выражение вернет результат и что управление не перескачит куда попало.

    Спасибо за краткую лекцию по ФП, но я, в общем-то, в курсе. Или ты хочешь сказать, что Smalltalk плох, потому что не является чистым ФЯ?

    FDS>>>кто даст гарантию, что какой-нибудь "умник" так не сделает

    EB>>Как "так"?

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

    Ты. Не. Понимаешь.
    Вообще.

    Где он это увидит? Приведи пример (можно на псевдокоде — только, пожалуйста, не Nemerle-вском).


    Что касается "выражений посложнее": в Smalltalk средний размер метода — 6-7 строк. Включая определение переменных и прочее. Где тут можно сделать "блок посложнее"?
    --
    Бесчастнов Евгений
    Re[18]: Насколько важен синтаксис языка?
    От: Lazy Cjow Rhrr Россия lj://_lcr_
    Дата: 07.09.06 06:29
    Оценка: +2
    Eugene Beschastnov,

    VD>>Блок без оператора "^" является классической Лямбдой с лексическим замыканием и присутствует во многих языках (в том же C#, например). А с ним является граблями ждущими своего часа.


    EB>25 лет ожиданий — слегка слишком долго для граблей


    Что-то не навится мне такая аргументация.

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

    А то чувствую, скоро аргументация скатится до "Ты казёл — сам казёл"...
    quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
    Re[20]: Насколько важен синтаксис языка?
    От: nostromo  
    Дата: 07.09.06 06:35
    Оценка: +1
    Здравствуйте, VladD2, Вы писали:

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


    В Smalltalk тоже нельзя прервать выражение.
    Например:
    SomeClass>>foo
    |a b|
        a := self bar. "возвращает что-то типа [:x | ^x + 42]"
        b :=  a value. "сюда мы уже не попадем, потому что предыдущая строка вызовет исключение"
        ...


    При попытке вызова этого метода в любезно предложенном отладчике мы увидим следующее (VisualWorks):
    cannotReturn: value 
        "Raise a signal which means that the reciever attempted to return 
        (with the supplied value), but its sender cannot be returned into 
        (e.g. sender is nil, probably because the receiver already returned). 
        This message is sent by the execution machinery (the VM or some
        execution simulator such as a debugger)."
    
        CannotReturnError new
            context: self;
            parameter: value;
            raise


    Отмечу также, что вместо
    (...) ifTrue: [^0] ifFalse: [^1].
    можно (и рекомендуется) писать так:
    ^(...) ifTrue: [0] ifFalse: [1].
    Re[21]: Насколько важен синтаксис языка?
    От: nostromo  
    Дата: 07.09.06 06:43
    Оценка:
    Виноват, ошибся, исключение вызывает, конечно, попытка вызова блока кода:
    SomeClass>>foo
    |a b|
        a := self bar. "возвращает что-то типа [:x | ^x + 42]"
        b :=  a value. "ЭТА строка вызовет исключение"
        ...
    Re[14]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 07.09.06 06:51
    Оценка: :)
    Здравствуйте, VladD2, Вы писали:

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


    VD>>>Хм. А как что же их тогда объявлять? Или ты предлагаешь вообще их не объявлять? Последнее приводит к ошибкам. Это натуральные грабли. Одна опечатка и ищи ошибку часами.


    FR>>Не заметил, опять?


    VD>Прости, что?


    Сказки венского леса.
    Re[11]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 07.09.06 06:51
    Оценка: +1
    Здравствуйте, VladD2, Вы писали:

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


    FR>>То что там окна MFC'шные не обязательно значит что среда написана на C++. Как пример есть биндинг MFC на питон, и на питоне можно писать используя MFC. И даже есть IDE написаное на питоне используя MFC — PythonWin.


    VD>Да, да. Шрирлиц все равно скажет, что апельсины приносил...


    VD>Не надо много умностей. Мы слышим от фанатов Смолток о том, что среды этого языка написаны на Смолток, а на повреку там МФЦ-шный код. Что тут умничать? Все же очевидно.


    Очевидно только то что используется MFC, это ни как ни противоречит тому что сама среда полностью написана на смалтоке.
    Re[17]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 07.09.06 06:51
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>Да, хороших программистов мало. Но у плохих всё равно нет никаких шансов поднять свой стартап, поэтому их не стоит вообще принимать в рассмотрение.


    У плохих программистов есть не меньше шансов поднять свой стартап.
    Re[12]: Насколько важен синтаксис языка?
    От: Mirrorer  
    Дата: 07.09.06 06:55
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Лямбду будет использоваться во всю. Просто нужно время.

    Время покажет

    VD>Опять -1. Шаблоны используются на право и на лево. Особенно готовые шаблонные классы. Вот метапрограммирование — это другое дело.

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

    Хотя это уже похоже на флейм "Должен ли программист знать алгоритмы сортировки если есть готовый qsort."
    ... << RSDN@Home 1.1.4 Pink Floyd — Money>>
    Re[10]: Насколько важен синтаксис языка?
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 07.09.06 07:42
    Оценка: 45 (5) +2
    Здравствуйте, Геннадий Васильев, Вы писали:
    ГВ>Почему я никакой маскировки не заметил? Что я сделал не так?
    Не прочитал. Очень рекомендую к освоению http://rsdn.ru/Forum/?uid=57842.
    Вот выдающиеся примеры его корректности и профессионализма:
    http://rsdn.ru/Forum/Message.aspx?mid=2092805&amp;only=1
    Автор: Win2k
    Дата: 04.09.06

    http://rsdn.ru/Forum/Message.aspx?mid=2092808&amp;only=1
    Автор: Win2k
    Дата: 04.09.06

    http://rsdn.ru/Forum/Message.aspx?mid=2078258&amp;only=1
    Автор: Win2k
    Дата: 26.08.06

    http://rsdn.ru/Forum/Message.aspx?mid=2069574&amp;only=1
    Автор: Win2k
    Дата: 22.08.06

    http://rsdn.ru/Forum/Message.aspx?mid=2069523&amp;only=1
    Автор: Win2k
    Дата: 22.08.06

    http://rsdn.ru/Forum/Message.aspx?mid=2067302&amp;only=1
    Автор: Win2k
    Дата: 20.08.06

    http://rsdn.ru/Forum/Message.aspx?mid=2067301&amp;only=1
    Автор: Win2k
    Дата: 20.08.06


    Это я еще выбрал наиболее яркие. А вообще, у него из 74 сообщений 19 уехали в трэш за нарушение п.5, а из остальных штук восемь наверное наберется таких, что не содержат прямых оскорблений собеседника, третьих, или неопределенного круга лиц.
    Вот одно из них. Судя по всему, чувак страшно гордится своим умением решать задачку про поиск циклов в списке:
    http://rsdn.ru/Forum/Message.aspx?mid=2069525&amp;only=1
    Автор: Win2k
    Дата: 22.08.06

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

    S>>И уж успешность его в жизни — не знаю, личной там или профессиональной, — вызывает обоснованные сомнения.

    ГВ>В контексте программистского форума мне его личная жизнь совсем не интересна. И твои (а также Влада и остальных) догадки о ней — тем паче.
    Ну почему же. Очень интересна. Вот я из прочтения собрания сочинений этого глашатая справедливости, вынес следующие умозаключения:
    — он тяготеет к задачам академического характера: фортран, теоретическое программирование, етц.
    — задачи коммерческого плана он считает ниже достоинства программиста
    — нетерпим к окружающим, склонен глумиться над малейшими промахами и считает 100% окружающих глупее себя.

    Резюме:
    — его комментарям и мнению не стоит доверять, т.к. налицо социопатические девиации.
    В частности, его мнение про синтаксис языка практической ценности не имеет. По крайней мере, не в большей степени, чем мнение гитлера о культурном наследии еврейского народа.




    S>>Влад верно заметил — те, кто чувствует себя комфортно и достиг успеха, не бегают на форумы собеседников в умственной отсталости обвинять.

    ГВ>Уф-ф-ф... Тяжела она, форумная жизнь. Не успели с личной жизнью оппонента разобраться, так ещё и его целеполагание определять надо. Не позавидуешь!
    А зачем его определять? По деяниям узнаете их. От него нет ни одного сообщения с советом или помощью. Нет и ни одного вопроса. Значит, пришел сюда не учиться и не помогать другим. Все, что он делает — хвастается своими знаниями (причем не говорит, какими именно. Видно, шыбко секретными), либо ругает знания других. С перекосом в сторону последнего. Что, есть какая-то неопределенность?
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[19]: Насколько важен синтаксис языка?
    От: Klapaucius  
    Дата: 07.09.06 07:49
    Оценка: +1 :))) :)
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>Не соглашусь. Ничего особенно классного в этом примере я не вижу (кстати, по хорошему бы надо бы написать "return" вместо "goto"). Возможно, в Nemerle это и создаёт какие-то проблемы (сам я Nemerle не знаю, поэтому судить не могу), но в Smalltalk — нет.


    А. Ну да, конечно. Если бы goto назывался не goto a return, то никаких проблем никогда и небыло бы. А если назвать "^", то не то что проблем нет — еще и куча бенефитов добавляется. Тайна goto раскрыта! Проблема goto в его названии!
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re[10]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 07.09.06 08:03
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


    EB>>В Smalltalk нет break, continue и goto .


    VD>^ пожалуй будет по круче чем break и continue. Вот с goto она успешно поконкурирует, только с С-шным дальним goto, так как goto в C# не позволят выходить из функций.


    Переводя:
    "return, пожалуй, будет покруче, чем break и continue. Вот с goto он успешно поконкурирует, только с С-шным дальним goto, так как goto в C# не позволят выходить из функций."

    Ну да, что-то в твоих словах есть
    --
    Бесчастнов Евгений
    Re[24]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 07.09.06 08:14
    Оценка: -1
    Здравствуйте, VladD2, Вы писали:

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


    ANS>>Блин, реально не пойму о каком непредсказуемом пути идёт реч.


    VD>Это плохо. Значит опыт 70-ых годов прошлого столетия прошел мимо тебя.


    Он прошол мимо всех, если майнстрим с завидным упорством изобретает старенькие велосипеды.

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


    VD>Ага. Это нарушает структрированность кода и протеворечит предположениям тех кто читает код.


    ANS>> То есть код работает так же как и код, который ты привёл.


    VD>Я привел? Это ты про что?


    Про письмо
    Автор: VladD2
    Дата: 05.09.06
    , на которое я отвечал

    VD>Большинство языков намерянно не позволяют сделать этого.


    Таких языков уже нету. Умерли или были пофикшены давным-давно. Хинт: механизм исключений.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[24]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 07.09.06 08:14
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Это возможно, но не элементарно.


    В каком-то частном случае — возможно. В общем — нет.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[21]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 07.09.06 08:14
    Оценка:
    Здравствуйте, Курилка, Вы писали:

    К>- каждый раз добавлять обработку исключений?


    Вот мне интересно, в Янусе на каждый пук по обработчику исключений стоит или таки есть один централизованый?
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[14]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 07.09.06 08:14
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>ОК. Подойди к любому квалифицированному C#- или Java-программисту или архитектуру и проконсультируйся у него по пводу того что он думает об исползовании исключений и их обработки для реализации логики приложения. Уверяю тебя стандартная реакция будет "руки (мягко говоря) надо отрывать тем уродом (тоже мягко говоря) которые это делают".


    -1. Безаргументная апеляции к мифическому массовому супер-опыту и плавный переход на личности.

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


    Еще раз — семантика похожа тем, что происходит корректный возврат из текущего контекста (вызовы finaly и пр.), в отличии от goto.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[22]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 07.09.06 08:20
    Оценка: +1
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


    К>>- каждый раз добавлять обработку исключений?


    ANS>Вот мне интересно, в Янусе на каждый пук по обработчику исключений стоит или таки есть один централизованый?


    Ты от вопроса не уходи и за Янус я не в ответе
    Зачем нужен нелокальный возврат я так и не увидел, а обработку против индусов мне нужно будет писать в коде МОЕЙ библиотеки, против всех их глюков, если я использую блоки.
    Re[23]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 07.09.06 08:49
    Оценка: -1
    Здравствуйте, Курилка, Вы писали:

    К>Зачем нужен нелокальный возврат я так и не увидел,


    ну, извини, я не учитель и быстро/просто обяснять не умею. Но говорю в последний раз, без этой фичи невозможно реализовать на лямбдах аналог такого кода:
    if (i == 0) return false;

    Это означает невозможность введения аналогичных конструкций.

    К>а обработку против индусов мне нужно будет писать в коде МОЕЙ библиотеки, против всех их глюков, если я использую блоки.


    библиотеке — пофиг.

    ЗЫ. Я устал переливать из пустого в порожнее. Предлагаю вернуться к нелокальным возвратам через пол года (само собой так обычно получается ).
    Всё сказал.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[24]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 07.09.06 09:37
    Оценка: +2
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


    К>>Зачем нужен нелокальный возврат я так и не увидел,


    ANS>ну, извини, я не учитель и быстро/просто обяснять не умею. Но говорю в последний раз, без этой фичи невозможно реализовать на лямбдах аналог такого кода:

    ANS>
    ANS>if (i == 0) return false;
    ANS>

    ANS>Это означает невозможность введения аналогичных конструкций.

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

    К>>а обработку против индусов мне нужно будет писать в коде МОЕЙ библиотеки, против всех их глюков, если я использую блоки.


    ANS>библиотеке — пофиг.


    О как, это почему?
    У меня в библиотеке есть функция, в которую передаётся блок, для правильной работы библиотеке нужен контроль за кодом.
    В случае с нормальными человеческими лямбдами это делается без таких проблем и обрабатывать эти возвраты отдельно не нужно.
    Re[18]: Насколько важен синтаксис языка?
    От: Lazy Cjow Rhrr Россия lj://_lcr_
    Дата: 07.09.06 09:43
    Оценка: :))
    Eugene Beschastnov,

    LCR>...От тебя требуется минимальные телодвижения, а я уже сносно читаю СТ-нотацию, больших проблем быть не должно.


    Ладно, не беспокойся, я сам нашёл Вот, имхо, интересный фрагмент:

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


    Как я понимаю этот фрагмент:

    Я — это коллекция. includes — это мой метод, принимающий один параметр. Внутри этого метода я вызываю у себя метод do с параметром-блоком. Этот блок очень интересный — в этом блоке содержится блок, который содержит выход прямо из метода includes. Вот эквивалент на Яве, если бы я была написана на Яве :

    // мой метод "инклюдес"
    boolean includes(Object object)
    {
        // создаём on-the-fly экземпляр внутреннего блока CodeBlock2, 
        // в котором есть нам подходящий абстрактный метод value с нужной сигнатурой.
        // аналог "[^ true]"
        final CodeBlock2 cb2 = new CodeBlock2()
        {
            boolean value() { throw new ReturnTrue(); }
        };
        
        // создаём замкнутый относительно внешних параметров object и cb2 экземпляр 
        // абстрактного класса CodeBlock1, в котором есть как раз подходящий нам абстрактный метод value,
        // аналог "[:element | element = object ifTrue: BLOCK]", в д.с. BLOCK == cb2
        final CodeBlock1 cb1 = new CodeBlock1(object, cb2)
        {
                Object    myobject = object;
                CodeBlock myblock  = cb2;
                
                boolean value(Object element) 
                { 
                    // аналог "element = object ifTrue: BLOCK"
                    if (element == myobject)
                        return myblock.value();
                }
        };
    
        // собственно код, который делает полезную работу
        try
        {
            return this.do(cb1);
        }
        catch (ReturnTrue rt)
        {
            return true;
        }
    }
    
    // мой метод "ду", идём по всем элементам, и для каждого элемента вызываем блок
    boolean do(CodeBlock cb)
    {
        Iterator it = this.iterator();
        while (it.hasNext())
        {
            Object element = it.next();
            cb.value(element); // либо выкинет "исключение" ReturnTrue, либо молча проедет дальше
        }
        return false;
    }


    Но конечно на Яве лучше вместо создания экземпляров блоков кода написать прямую итерацию по коллекции.

    PS: ООП не люблю, об ST впервые слышу, и вообще я просто погулять вышел
    quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
    Re[18]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 07.09.06 10:11
    Оценка:
    Здравствуйте, Lazy Cjow Rhrr, Вы писали:

    LCR>Ещё раз прочитай выделенное


    и что
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[18]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 07.09.06 10:11
    Оценка:
    Здравствуйте, FR, Вы писали:

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


    бывает, что и дуракам везет. Но я все-таки не стал бы считать это за правило.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[19]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 07.09.06 10:17
    Оценка:
    Здравствуйте, Дарней, Вы писали:

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


    LCR>>Ещё раз прочитай выделенное


    Д>и что


    Т.е. ты уже забыл про свои утверждения про "привычность" и проч.?
    Re[20]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 07.09.06 10:21
    Оценка: +2
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>Вообще, на блоках в Smalltalk сделано практически всё — работа с коллекциями, exception-ы, параллельные процессы,и т.д. и т.п. И я не видел ни одной жалобы на непонятность поведения блоков — в том числе и от новичков. Разумеется, "теоретические" рассуждения на RSDN от людей, не знающих Smalltalk, не в счёт.


    не надо валить в одну кучу саму концепцию блоков и механизм нелокальных возвратов
    потому что первое — это обыкновенная лямбда, полезность которой никто не оспаривает. А второе — это нечто со странным поведением и сомнительной полезностью.
    и не надо опять вспоминать про исключения. Их задача — обработка исключительных ситуаций, что должно быть понятно даже по названию. То, что их можно применить не по назначению — это уже отдельный вопрос, который обычно решается с помощью плети-семихвостки и прочих инструментов убеждения.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[19]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 07.09.06 10:24
    Оценка:
    Здравствуйте, Дарней, Вы писали:

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


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


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


    Что такое hype (не знаю как по-русски) знаешь?
    Деньги думаешь выделяются умными академиками, которые по 1000 работ по CS написали?
    Раньше был кобол, потом плюсы, потом ява, донет, теперь руби тоже начинает быть именно "модой". Маркетологам и менеджерам, не рубящим в ИТ как стоит главное, чтобы технология была на устах, думаешь им интересны макросы?
    Re[20]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 07.09.06 10:27
    Оценка:
    Здравствуйте, Курилка, Вы писали:

    К>Т.е. ты уже забыл про свои утверждения про "привычность" и проч.?


    Я вполне определенно писал, что привычность имеет значение при прочих равных условиях. Если "прочие условия" сильно не равны, то выбор конечно за более удобным инструментом.
    Пока что из "прочих условий" Смоллтока в этой теме приводился только механизм нелокальных возвратов как пример конструкции, которая невозможна в других языках. И знаешь что я скажу?
    И хорошо, что невозможна!
    Не надо мне таких "улучшений"
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[21]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 07.09.06 10:27
    Оценка:
    Здравствуйте, Дарней, Вы писали:

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


    EB>>Вообще, на блоках в Smalltalk сделано практически всё — работа с коллекциями, exception-ы, параллельные процессы,и т.д. и т.п. И я не видел ни одной жалобы на непонятность поведения блоков — в том числе и от новичков. Разумеется, "теоретические" рассуждения на RSDN от людей, не знающих Smalltalk, не в счёт.


    Д>не надо валить в одну кучу саму концепцию блоков и механизм нелокальных возвратов

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

    Как раз надо валить, т.к. как раз нелокальные возвраты лишь в блоках и возможны (хотя может ST таит ещё что-нибудь загадочное )
    Re[11]: Насколько важен синтаксис языка?
    От: Lazy Cjow Rhrr Россия lj://_lcr_
    Дата: 07.09.06 10:28
    Оценка: +3 :)
    Sinclair,

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

    SA>>Ситуация: нечего делать на работе. Вернее, есть, но очень мало.
    SA>>Менять работу нет смысла — зарплата достаточно высокая.
    W> Тогда осознай себя тунеядцем и выпей чашечку йадку.

    Нормальный ответ. Вполне соответствует вопросу. Я бы посоветовал ещё об стену...

    SON>>Развелось вас атеистов, как г..на. Думаете самые умные? А вы знаете, что вера "нивочто" — это тоже вера? Плевал я на вашу веру!
    W> Очень смешной верующий. Типичный, правда. Вы, верующие, все смешные, без исключений.
    W> Логику вы в детстве изучить не осилили, это очевидно. Верить в несуществование и не верить в существование — это две принципиально разные вещи. Только очень ущербные люди не осознают этой разницы. И что самое смешное — некоторые из этих ущербных умудряются как-то программировать. Для меня это настоящая загадка — как же они операциями булевой алгебры пользуются, если даже самую базовую логику не освоили?

    Тоже ответ вполне адекватен вопросу (реплике).

    Просто человек молод, и у человека преобладает бинарный взгляд на мир. Ничего страшного, это обычно проходит с возрастом.
    quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
    Re[20]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 07.09.06 10:32
    Оценка:
    Здравствуйте, Курилка, Вы писали:

    Не понимаю, к чему весь этот поток сознания. Если в некоей организации делают выбор люди, которые не могут понять последствия этого выбора и не консультируются с теми, кто может — то програма действий крайне проста. Ноги в руки, и прочь из этой организации! Открой свою, и разори недоумков
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[21]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 07.09.06 10:32
    Оценка:
    Здравствуйте, Дарней, Вы писали:

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


    К>>Т.е. ты уже забыл про свои утверждения про "привычность" и проч.?


    Д>Я вполне определенно писал, что привычность имеет значение при прочих равных условиях. Если "прочие условия" сильно не равны, то выбор конечно за более удобным инструментом.

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

    Подменяешь тему, не хорошо...
    Тут (в этой ветке) про ST речи не было, вопрос гораздо шире ставится, и я вообще о лиспе писал
    Re[22]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 07.09.06 10:34
    Оценка:
    Здравствуйте, Курилка, Вы писали:

    К>Подменяешь тему, не хорошо...


    это ты подменяешь. На твой вопрос я ответил, про смоллток — это просто дополнение.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[22]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 07.09.06 10:36
    Оценка: +1
    Здравствуйте, Курилка, Вы писали:

    К>Как раз надо валить, т.к. как раз нелокальные возвраты лишь в блоках и возможны (хотя может ST таит ещё что-нибудь загадочное )


    нелокальные возвраты без блоков невозможны, зато блоки без нелокальных возвратов — вполне возможны.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[21]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 07.09.06 10:38
    Оценка:
    Здравствуйте, Дарней, Вы писали:

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


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


    Неглубоко смотришь
    И что за агрессия, если не секрет?
    А если по сути, то из одних технологий бизнес не строится, кроме кода ещё нужен менеджмент, маркетинг и проч.
    Сейчас с этим гораздо проще — интернет многое упрощает, поэтому и появляются RoR и иже с ними.
    Но на голом этузиазме семью не прокормишь.
    Re[21]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 07.09.06 10:38
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>Ты. Не. Понимаешь.

    EB>Вообще.

    EB>Где он это увидит? Приведи пример (можно на псевдокоде — только, пожалуйста, не Nemerle-вском).


    лучще приведи пример кода, где не жить не быть — но без нелокальных возвратов обойтись нельзя
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[22]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 07.09.06 10:45
    Оценка: :)
    Здравствуйте, Курилка, Вы писали:

    К>А если по сути, то из одних технологий бизнес не строится, кроме кода ещё нужен менеджмент, маркетинг и проч.


    ага, как же без них. Но ты знаешь, среди программистов всё-таки довольно мало откровенно глупых людей, и просто так втюхать им полное фуфло не получится. Благо, есть такой мощный источник информации, как интернет. И неважно, сколько денег вбухали в маркетинг.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[23]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 07.09.06 10:50
    Оценка:
    Здравствуйте, Дарней, Вы писали:

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


    К>>А если по сути, то из одних технологий бизнес не строится, кроме кода ещё нужен менеджмент, маркетинг и проч.


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


    Да? А вот микрософт-то не знает...
    Это, конечно, ирония, но про то, как кормить семью на голом энтузиазме ты не прокомментировал
    Re[18]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 10:57
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>25 лет ожиданий — слегка слишком долго для граблей


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

    ЗЫ

    А вообще согласен с Lazy Cjow Rhrr. Это уже не аргументация, а полнейшая демагогия. Мне такие разговоры не интересны.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[21]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 10:57
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>Интересная особенность реализации. Но ты не находишь, что эта твоя фраза противоречит предыдущему абзацу? Раз return является макросом — значит его можно переписать и изменить ему поведение.


    Можно. Макросы вообще много что могут. Но глобального goto нет. И получить аналог Смолтоковского ^ невозможно в принципе. Код все равно будет структурированным. К тому же чтобы использовать макрос нужно совершить некоторые телодвижения (импортировать его пространство банальная лень подталкивает к тмоу, чтобы писать без return-ов вообще. И ты знашь, что? Через некторое время оказывается что это вовсе не сложно, а код получается даже чуточку лучше (более понятным).

    EB>Спасибо за краткую лекцию по ФП, но я, в общем-то, в курсе. Или ты хочешь сказать, что Smalltalk плох, потому что не является чистым ФЯ?


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

    EB>Ты. Не. Понимаешь.

    EB>Вообще.

    На этот счет есть еще одна теория.

    EB>Где он это увидит? Приведи пример (можно на псевдокоде — только, пожалуйста, не Nemerle-вском).


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

    EB>Что касается "выражений посложнее": в Smalltalk средний размер метода — 6-7 строк. Включая определение переменных и прочее. Где тут можно сделать "блок посложнее"?


    Это сказки. В реальном коде размер метода будет определяться умениями программиста по декомпозиции и обемностью стоящей перед методом задачи. И рано или поздно в коде появятся методы размером хотя бы в 10-20 строк.

    Другие языки (особенно функциональные) имеют даже лучшие средства декомпозиции функций нежели те что имется в Смолтоке, но и работая на них получаются большие функции.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[21]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 10:57
    Оценка:
    Здравствуйте, nostromo, Вы писали:

    N>В Smalltalk тоже нельзя прервать выражение.


    Я не понимаю. Что трудно взглянуть выше по теме?

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

    То что это нельзя сделать в арифмитическом выражении — это конечно хорошо. Но вот то что присвоение переменной может не произойти в следсвии хакерских выпендрежей мне категорически не нравится.

    ЗЫ

    Большая просьба изучать тему если входишь в разговор в ее середине.

    N>Отмечу также, что вместо

    N>(...) ifTrue: [^0] ifFalse: [^1].
    N>можно (и рекомендуется) писать так:
    N>^(...) ifTrue: [0] ifFalse: [1].

    Отмечу, что безопасный язык отличается от небезопасного тем, что в нем нельзя применять отровенно плохие приемы, а в небезопасном всего лишь не рекомендуется.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[19]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 10:57
    Оценка:
    Здравствуйте, Lazy Cjow Rhrr, Вы писали:

    LCR> Довольно неуклюжий переезд на личность.


    Нет. Всего лишь небольшая шутка-сарказм. Но судя по ее восприятию (без юмора и с озлобленностью), она папала в точку.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[15]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 10:57
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


    VD>>ОК. Подойди к любому квалифицированному C#- или Java-программисту или архитектуру и проконсультируйся у него по пводу того что он думает об исползовании исключений и их обработки для реализации логики приложения. Уверяю тебя стандартная реакция будет "руки (мягко говоря) надо отрывать тем уродом (тоже мягко говоря) которые это делают".


    ANS>-1. Безаргументная апеляции к мифическому массовому супер-опыту и плавный переход на личности.


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

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

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


    ANS>Еще раз — семантика похожа тем, что происходит корректный возврат из текущего контекста (вызовы finaly и пр.), в отличии от goto.


    Еще раз. Исключения не используется (грамотными программистами) для управления логикой. Если бы ^ использовалаь только для обработки исключительных ситуаций, то вопросов бы не было. Но она используется для передачи управления в штатных условиях. Ты с ее помощью описываешь алгоритм! И в рамках этого алгоритма переходы будут не структурными (выход из выражения, не завершающися метод...). Для исключений же неструктурности не возникает, так как на уровне обработки исключений нет стрктуры прогрммы. Мы ограничиваем защищаемый блок и в случае возникновения непредвиденной ситуации в нем пытаемся привести программу в корректное состояние. То есть в рамках задачи обработки исключений мы имеет все ту же структурность. Обработчики и защищенные блоки всегда расположены иерархически.

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

    VD>>^ пожалуй будет по круче чем break и continue. Вот с goto она успешно поконкурирует, только с С-шным дальним goto, так как goto в C# не позволят выходить из функций.


    EB>Переводя:

    EB>"return, пожалуй, будет покруче, чем break и continue. Вот с goto он успешно поконкурирует, только с С-шным дальним goto, так как goto в C# не позволят выходить из функций."

    Ненадо переводить. return в С-подобных языках не анлогичен ^ в Смолтоке. Потому ты и начал им хвастаться. Вот только на поверку окалось, что его отличия — это то что опытные программисты так не любят в goto.

    EB>Ну да, что-то в твоих словах есть


    Смысл. Так что вдумывайся. Может проникнишся.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[12]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 10:57
    Оценка:
    Здравствуйте, FR, Вы писали:

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


    Надо сильно себя загипнотизировать чтобы верить в это. Вот IDEA написана на Яве. И думать тут нечего. VS напиана на С++ и в ней используется менеджед-код, но никто не хвастается, что VS менеджед-среда. Более того есть планы в будущем переписать VS на менеджед-языках.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[13]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 10:57
    Оценка:
    Здравствуйте, night beast, Вы писали:

    NB>своеобразное решение

    NB>а если он под анонимом пишет?

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

    VD>>Лямбду будет использоваться во всю. Просто нужно время.

    M>Время покажет

    Ага. Но я почти уверен в этом уже сейчас. МС использует лямбды для упрощения доступа к данным в LINQ (читай C# 3.0). Так что волей не волей но люди привыкнут к ним.

    VD>>Опять -1. Шаблоны используются на право и на лево. Особенно готовые шаблонные классы. Вот метапрограммирование — это другое дело.

    M>Ну использование и написание своего две большие разницы как говорят в Одессе.

    Ага. Так что надо это четко отделять. Тут прозвучала фраза "использовать".

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


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

    M> Или если используются как black box, без понимания как они работают.


    Еще раз. У регекстов нет возможности превратить их в черный ящик. Возможно если бы это было возможно, то и использование их было бы более обширно. Создали бы библиотеку стандартных регексов и пользовались бы ими по имени.

    M> Под использованием я подразумевал глубокое понимание того, что происходит, и способность писать свое.


    Тебе нужно глубокое понимание устройства компилятора для использования конструкции if/else? Вот в Немерле if/else — это макрос. Использовать его значит применять в прграмме. А вот писать свои макросы — это другое дело.

    M>Хотя это уже похоже на флейм "Должен ли программист знать алгоритмы сортировки если есть готовый qsort."


    А это не флэйм. Это неверная постановка вопроса. Верная будет звучать так.

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

    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[25]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 10:57
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Он прошол мимо всех, если майнстрим с завидным упорством изобретает старенькие велосипеды.


    Он их не изобретает, а впитывает. По тихоничку, чтобы не дай бог не впитать и граблей.

    ANS>>> То есть код работает так же как и код, который ты привёл.

    VD>>Я привел? Это ты про что?
    ANS>Про письмо
    Автор: VladD2
    Дата: 05.09.06
    , на которое я отвечал


    Все не понимаю. Видимо уже терю нить разговора.

    VD>>Большинство языков намерянно не позволяют сделать этого.


    ANS>Таких языков уже нету. Умерли или были пофикшены давным-давно. Хинт: механизм исключений.


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

    VD>Давайте, и начнем с принципов структурного программирования. ОК?

    VD>Что ты о них думаешь?

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

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


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

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

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


    Представьте макрос if (cond) then {trueBlock} else {falseBlock}
    Вы передаете блоки в качестве параметров макроса. Если Вы напишите return в этих блоках, будет это являться неструктурируемой передачей управления?

    Возврат из блоков в Smalltalk используется для завершения работы текущего метода (в котором описан блок) с передачей результата. Это то же самое, что написать return не в конце метода, а например в if. И происходит передача управления в соответствии с принципами структурного программирования. Такая возможность используется в Smalltalk также часто как и в других языках.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[24]: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 07.09.06 11:01
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


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


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

    Я прошу Вас привести пример кода, который на Ваш взгляд мог бы передать управления "в никуда" (псевдокод).
    Я со своей стороны попытаюсь продемонстрировать работу этого кода в Smalltalk. Может действительно найдем подводные камни.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    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
    Re[20]: Насколько важен синтаксис языка?
    От: Lazy Cjow Rhrr Россия lj://_lcr_
    Дата: 07.09.06 12:20
    Оценка: 6 (1)
    Beam,

    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>    ...
    B>}
    B>

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

    Найн, найн. Когда я делал мой аналог, я пытался установить соответствие 1:1 Java-объектов и объектов из Smalltalk. Единственное, я не пошёл до самого конца и не превратил "element = object ifTrue: [BLOCK]" в вызов метода для объекта Boolean — и так уже создание экземпляров CodeBlock вылилось в нехилый оверхед.

    Здесь же ты (можно на "ты"?) привёл идеологически совершенно другой код: в коде на Смоллтоке итерация как бы "внутренняя", а в твоём коде на Яве "внешняя".

    У тебя нет возвращения "true" "изнутри". Чтобы вернуть true "изнутри", мне пришлось кинуть исключение ReturnTrue, чтобы создать близкий аналог СТ-кода.

    И всё равно полного аналога не получилось!

    Чтобы получить полный аналог, надо как-то эмулировать исполнение в "домашнем" фрейме, а в Яве (и вообще в любом структурном языке) код исполняется только в _текущем_ фрейме. (Термин фрейм — стандартный, мы можем наблюдать фрейм функции в отладчике, когда сделаем step into в эту функцию). Вот поэтому этот приём и производит впечатление неструктурированного.

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

    Я разумеется нашёл вполне конкретное и доступное объяснение блоков.

    It is useful to distinguish between two kinds of blocks:
    1. Those that end with a return expression. We will call these continuation blocks (there is no standard, concise term). For example: [:x :y| ^x+y]
    2. Those not ending in a return expression, which we will call simple blocks.

    When a simple block completes evaluation, it returns its value (the result of evaluating the last message expression in the block) to the method that sent it the message (the sender). (это понятно — прим. перев.)

    When a continuation block completes evaluation it returns its result to the method that activated its home context.


    Отсюда правило:

    A simple block can be evaluated many times; a continuation block can be evaluated at most once.

    b := [ :x | Transcript show: x. ^x ].
    b value: 'a'; value: 'b'              "ERRRROR!!!"


    Так что моя точка зрения следующая:
    1. Континуэйшн-блоки в СТ нарушают некоторые правила стандартного структурного программирования. Или можно переформулировать так: континуэйшн-блоки создают нестандартную стурктуру исполнения программ.
    2. Подозреваю, что правило сформулированное абзацем выше позволяет избежать всех граблей связанных с "Context cannot return error" и вообще с континуэйшн-блоками. Ну или если нет, то пожалуйста (обращаюсь ко всем Смоллтоковцам) сформулируйте мне такое правило.
    quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
    Re[12]: Насколько важен синтаксис языка?
    От: vdimas Россия  
    Дата: 07.09.06 12:22
    Оценка: +1 :)
    Здравствуйте, Дарней, Вы писали:

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


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


    Д>у кого преимущество?


    У того, о чем речь

    Д>перед кем?


    перед очень платными конкурентными решениями (бесплатные увидели свет не так давно)

    Д>интеграции с чем?


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


    Д>высказался, как в лужу пукнул


    ставлю на то, что в личной беседе ты бы не рискнул вставить этот и ему подобные обороты
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[21]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 07.09.06 12:49
    Оценка: 11 (1)
    Здравствуйте, Lazy Cjow Rhrr, Вы писали:

    LCR>
    LCR>b := [ :x | Transcript show: x. ^x ].
    LCR>b value: 'a'; value: 'b'              "ERRRROR!!!"
    LCR>


    Замечу, что до второго вызова управление не дойдёт вообще.

    LCR>2. Подозреваю, что правило сформулированное абзацем выше позволяет избежать всех граблей связанных с "Context cannot return error" и вообще с континуэйшн-блоками. Ну или если нет, то пожалуйста (обращаюсь ко всем Смоллтоковцам) сформулируйте мне такое правило.


    Повторный вызов "умершего" блока блока это логическая ошибка. Такая же как, например, использование уже закрытого файла. "Повторный вызов" проявит себя так же — выбросит исключение. Естественно, исключение будет брошено в контексте использования блока, а не в контексте определения блока.
    Что касается правил, то код, который является безопасным по отношению к исключениям (использует finaly), так же безопасный по отношению к нелокальному возврату (так как при нелокальном возврате будут вызваны все finaly, которые называются ensure: в ST). Такой код нужно писать и в Java и в Nemrle — _всегда_.

    ЗЫ. Простите, не сдержался. Это точно мой последний пост про нелокальные возвраты на ближайшие три месяца.

    ЗЗЫ. Если будете мусолить эту тему дальше, то постепенно дойдёте до вреда состояний вообще. Потому как, после исключения объект может остаться в невалидном состоянии.

    ЗЗЗЫ. А там и до статической типизации vs. динамической не далеко.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[15]: Насколько важен синтаксис языка?
    От: Turtle.BAZON.Group  
    Дата: 07.09.06 12:59
    Оценка: 1 (1)
    Здравствуйте, FDSC, Вы писали:

    TBG>>Интерпертатор и среда Emacs с настроенным SLIME (Superior Lisp Interaction Mode for Emacs)


    FDS>Ссылка не работает.


    Странно. Только что проверил — работает...
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[22]: Насколько важен синтаксис языка?
    От: Lazy Cjow Rhrr Россия lj://_lcr_
    Дата: 07.09.06 13:06
    Оценка: :)
    Andrei N.Sobchuck,

    ANS>Повторный вызов "умершего" блока блока это логическая ошибка. Такая же как, например, использование уже закрытого файла. "Повторный вызов" проявит себя так же — выбросит исключение. Естественно, исключение будет брошено в контексте использования блока, а не в контексте определения блока.


    Это понятно. Короче, получаем краткое и чёткое правило: "не вызывай умерший блок".

    ANS>ЗЫ. Простите, не сдержался. Это точно мой последний пост про нелокальные возвраты на ближайшие три месяца.

    ANS>ЗЗЫ. Если будете мусолить эту тему дальше, то постепенно дойдёте до вреда состояний вообще. Потому как, после исключения объект может остаться в невалидном состоянии.
    ANS>ЗЗЗЫ. А там и до статической типизации vs. динамической не далеко.

    Спасибо за разъяснение. Можешь отдыхать, лично мне всё понятно
    quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
    Re[22]: Насколько важен синтаксис языка?
    От: nostromo  
    Дата: 07.09.06 13:16
    Оценка: 46 (4) +1
    Здравствуйте, VladD2, Вы писали:

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


    VD>То что это нельзя сделать в арифмитическом выражении — это конечно хорошо. Но вот то что присвоение переменной может не произойти в следсвии хакерских выпендрежей мне категорически не нравится.


    Прошу прощения, мне показалось, что речь идет о том, что есть опасность неочевидного прерывания вычисления выражения за счет манипулирования блоками с оператором "^". При этом мне показалось, что обсуждаемым неочевидным случаем является получения такого "плохого" блока из вне. Был не прав.

    Наверное, самая плохая ситуация с блоками в Smalltalk может выглядеть примерно так:

    SomeClass>>foo
    ...
    a := [... ^1.]
    ...
    b := ... (a value) ... "выражение, содержащего вызов блока с оператором возврата"
    ...



    При вызове такого метода до присваивания значения переменной b дело не дойдет.
    Однако, как уже отмечалось, такая ситуация является экзотикой да и Smalltalk никогда не навешивал на себя медаль "Абсолютно безопасный".

    Ситуацию может сгладить система автоматической проверки кода (Code Critic).
    По крайней мере в VisualWorks она доступна в стандартном браузере класса.
    Так вот, метод, подобный показанному выше, будет пойман правилом "Method with full blocks".

    Позволю себе привести описание правила из документации:

    Methods with full blocks. Checks for methods that contain full blocks
    or create a context with the thisContext
    keyword. These methods are a place where
    inefficiencies can creep in. For example, a
    common reason why a full block is created is
    because a block assigns a temporary
    variable that is not defined inside the block. If
    the temporary variable is only used inside
    the block, then the definition of the
    temporary should be moved inside the block.
    The "move to inner scope" refactoring can be
    used to correct this.


    а также исходный текст метода, его реализующего:

    Refactory.Browser.BlockLintRule>>fullBlocks
        | detector |
        detector := self new.
        detector name: (#MethodWithFullBlocks << #browser >> 'Method with full blocks') asString.
        detector methodBlock: 
                [:context :result | 
                context compiledMethod withAllBlockMethodsDo: 
                        [:method | 
                        method needsHybridFrame
                            ifTrue: [result addClass: context selectedClass selector: context selector]]].
        ^detector



    Отмечу, что "Code Critic" --- не некоторая экзотическая тулза, а легкое и всегда доступное средство. (Всего в "Code Critic" около сотни различных проверок в пяти разделах. И никто не мешает писать свои).

    Это все я написал к тому, что оценивать ту или иную среду можно только в комплексе, а в случае Smalltalk это особенно актуально.

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


    Баланс между строгими запретами и рекомендациями --- очень тонкая вещь, лежащая, в основном, на совести создателей языка. К тому же прием не становится откровенно плохим только от того, что есть лучшее решение. На мой взгляд, плохим приемом стоит считать только тот, который приводит к неочевидным, трудно находимым ошибкам, чего здесь не наблюдается.
    Re[14]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 13:19
    Оценка:
    Здравствуйте, Lazy Cjow Rhrr, Вы писали:

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


    Это прямые и косвенные оскорбления, надменность и хмаство нормально?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[17]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 13:19
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Что касается исключений. И так, ты зарегистрирова некий лисенер. При вызове лисенера он бросил NPE. Превратился ли в этот момент Java/C# в небезопасный неструктурный язык?


    Он приведет к неработоспособной программе.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[18]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 07.09.06 13:34
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    ANS>>Что касается исключений. И так, ты зарегистрирова некий лисенер. При вызове лисенера он бросил NPE. Превратился ли в этот момент Java/C# в небезопасный неструктурный язык?


    VD>Он приведет к неработоспособной программе.


    Тяжело вам там в .Net. В ST не работала бы только одна функция.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[19]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 07.09.06 13:37
    Оценка: 1 (1) +1 :))
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


    ANS>>>Что касается исключений. И так, ты зарегистрирова некий лисенер. При вызове лисенера он бросил NPE. Превратился ли в этот момент Java/C# в небезопасный неструктурный язык?


    VD>>Он приведет к неработоспособной программе.


    ANS>Тяжело вам там в .Net. В ST не работала бы только одна функция.


    А в ST остальные ф-ции, вызвавшие "не работающую" магическим образом будут работать?
    Re[20]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 07.09.06 13:40
    Оценка:
    Здравствуйте, Курилка, Вы писали:

    К>А в ST остальные ф-ции, вызвавшие "не работающую" магическим образом будут работать?


    Всей программе, как карточному домику, не обязательно рассыпатся.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[21]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 07.09.06 13:43
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


    К>>А в ST остальные ф-ции, вызвавшие "не работающую" магическим образом будут работать?


    ANS>Всей программе, как карточному домику, не обязательно рассыпатся.


    Ну и что будет делать вызывающая функция в таком случае?
    Придумает возвращаемое значение?
    Re[15]: Насколько важен синтаксис языка?
    От: Lazy Cjow Rhrr Россия lj://_lcr_
    Дата: 07.09.06 13:46
    Оценка: :)
    VladD2,

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


    VD>Это прямые и косвенные оскорбления, надменность и хамство нормально?


    Ммм.. Нет, конечно. Но и твоя, и моя оценка субъективна. Возможно, я не прав и слишком далеко прочертил границу дозволенного. Ладно, в бане — так в бане. Не смертельно.
    quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
    Re[26]: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 07.09.06 13:59
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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

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

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


    Если такое сделать на Smalltalk то будет сгенерировано исключение.

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


    Для пользователя метода ifTrue:ifFalse: даже если передать в них блок с ^ возврат будет происходить всегда предсказуемо.

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


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


    Вы можете не использовать это. Аналогичной функциональности можно добиться и без использования возврата из блока. Так же как например Вы можете не писать в Java и С# return в ветке if, а дойти до конца метода и выполнить return.

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


    Я просил привести такой пример. Без этого я не вижу смысла это обсуждать
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[26]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 07.09.06 14:27
    Оценка: 16 (4) +4 -1
    Здравствуйте, VladD2, Вы писали:

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


    Собственно, так и есть.

    VD>Вы, поклонники Смолтока, сидите на этих комнях и упорно их не видите. Для меня это очевидные грабли. Для вас вполне нормальная вещь.


    Грабли видят (точнее, ощущают, те, кто на них наступают). Если смолторкеры говорят, что они программируют на SmallTalk и не натыкаются на эти грабли, а ты, не программируя на SmallTalk, говоришь, что видишь эти грабли... То для стороннего наблюдателя твое мнение выглядит, по меньшей мере странным. Ладно бы ты говорил про аналогии в других языках (как это часто делается про обсуждении макросов в Nemerle и макросов в других языках). Так ведь нет.

    В Ruby, к примеру, блок кода можно создать либо через Proc.new (конструирование путем создания нового экземпляра объекта-блока), либо методом Kernel#lambda:
    block_with_nonlocal_return = Proc.new { return }
    block_with_local_return = lambda { return }

    Блоки, созданные через Proc.new ведут себя так же, как блоки с ^ в SmallTalk (по крайней мере, насколько я понял из описаний смолтолкеров) -- применение в чужом контексте приведет к порождению исключения. Блоки, созданные через lambda, напротив, не прерывают работу вызвавшего их кода -- происходит возврат только из тела лямбды:
    irb(main):001:0> def sample(&block)
    irb(main):002:1> block.call
    irb(main):003:1> end
    => nil
    irb(main):004:0> sample &Proc.new { return }
    LocalJumpError: unexpected return
            from (irb):4
            from (irb):2:in `sample'
            from (irb):4
    irb(main):005:0> sample &lambda { return }
    => nil
    irb(main):006:0>

    И при работе в Ruby я лично ни разу не видел, чтобы это стало граблями. Ни разу.


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

    ГВ>>Почему я никакой маскировки не заметил? Что я сделал не так?

    S>Не прочитал.

    Что за гнусные инсинуации! Разумеется, прочитал. И всё равно не оскорбился. Ну искрит время от времени, велика важность! ИМХО, с этого вреда гораздо меньше, чем с высказываний типа: "Кто не следует майнстриму, у того нет ума".

    S>>>И уж успешность его в жизни — не знаю, личной там или профессиональной, — вызывает обоснованные сомнения.

    ГВ>>В контексте программистского форума мне его личная жизнь совсем не интересна. И твои (а также Влада и остальных) догадки о ней — тем паче.
    S>Ну почему же. Очень интересна.

    Я ж тебе говорю, это не ко мне. Кто где работает, кто чьих будет, у кого какой диагноз, кто есть что — это на кухне под пиво потрындеть. Да и то темы посодержательнее найти можно.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[14]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 07.09.06 14:51
    Оценка: -1
    Здравствуйте, Master Yoda, Вы писали:

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


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


    Ламером он тут называет автора статьи:

    Первое сообщение:
    Автор: Win2k
    Дата: 18.08.06

    И ведь ни TeX, ни Metafont не помянули. DEC VMS как будто и не существовало... В общем, аффтар — ламер. Не жжот.


    Твой ответ:
    Автор: Master Yoda
    Дата: 18.08.06

    W> И ведь ни TeX, ни Metafont не помянули. DEC VMS как будто и не существовало...

    Аналогично

    Следующее сообщение (Win2k)
    Автор: Win2k
    Дата: 22.08.06


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


    Последняя фраза — рефрен к "автор — ламер". Вовсе не в твой адрес. Так что видишь ты тут не правильно.

    А ты сам не иронизировал бы про "одни мы, ламеры, нервно курим в сторонке", так и не нарвался бы на ответную иронию.

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


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


    Знаешь, порой много экономичнее вместо долгого разбора по кусочкам, многокилобайтного вычисления ошибок и их разбора, вычленения неправомерных обобщений и усилений... В общем, вместо анализа просто сказать: автор — ламер. Тем более, когда такие вещи видны не вооружённым глазом.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[12]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 07.09.06 14:57
    Оценка: +2 -1
    Здравствуйте, Дарней, Вы писали:

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

    Д>у кого преимущество? перед кем? интеграции с чем?
    Д>высказался, как в лужу пукнул

    Может, хватит мусорить?
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[17]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 07.09.06 15:06
    Оценка: +3
    Здравствуйте, Дарней, Вы писали:

    ГВ>>Окстись! Слово-то такое "Lisp" слышали не все, а пользоваться им умеют и не боятся ещё более редкие представители. Из этих редких единиц ещё более редкие единицы действительно будут стартапить. Не все же спят и видят, как бы заняться собственным стартапом. Откуда тут "волна" стартапов выпрыгнет?

    Д>Ты опять ставишь всё с ног на голову. Начнем с того, что стартапят далеко не "редкие единицы".

    Заблуждение. Если бы хоть 6% программистов (60% от всех Хороших Програмистов ) поднимали свои стартапы, то был бы тайфун стартапов.

    Д>Из хороших программистов 99,9% хотя бы раз задумывалось об открытии своего дела, задолбавшись исполнять команды идиота-руководителя А большинство из них не только думает, но и делает — иначе они не были бы хорошими программистами.


    Угу. Типа стартап — это писать то, что тебе в кайф, а деньги сами в карман сыплются.

    Д>Да, хороших программистов мало. Но у плохих всё равно нет никаких шансов поднять свой стартап, поэтому их не стоит вообще принимать в рассмотрение.


    Заблуждение.

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


    Заблуждение. Гламурное к тому же.

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


    Ага, а параллельно для хорошего програмиста не составит никаких проблем выполнять функции бухгалтера, директора, администратора и т.п.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[8]: Насколько важен синтаксис языка?
    От: fmiracle  
    Дата: 07.09.06 15:11
    Оценка: 48 (6) :))) :))) :))
    Здравствуйте, Дарней, Вы писали:

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


    О. Это просто удивительно, что только ни делают люди.
    Я одно время писал код под удивительную систему G2. Такая штука для построения экспертных систем. У нее был удивительнейший внутренний язык программирования. Рассчитан типа на не-программистов, а "простых экспертов" в некой области.. Потому очень сильно был привязан к английской граматике. Не знаю как эксперты, а программисты у нас от него все плевались.

    В том языке много было удивительных вещей, но меня лично больше всего поразило, что он понимал и требовал(!) использование артиклей(!!) и, хуже того, различал артикли 'a' и 'an' по правилам английского языка (гласная-согласная) и требовал их правильного(!!!) применения!
    Это было мега.
    Уже — к счастью — стерлись детали синатксиса, но было что-то типа так:

        if the obj is an object then ...(а с просто "а" - будет ошибка!)
        if the obj is a someOtherObject then ...
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[9]: Насколько важен синтаксис языка?
    От: Vermicious Knid  
    Дата: 07.09.06 16:21
    Оценка: 51 (8) :))
    Здравствуйте, fmiracle, Вы писали:


    F>В том языке много было удивительных вещей, но меня лично больше всего поразило, что он понимал и требовал(!) использование артиклей(!!) и, хуже того, различал артикли 'a' и 'an' по правилам английского языка (гласная-согласная) и требовал их правильного(!!!) применения!

    F>Это было мега.
    Есть как минимум еще один такой мега-язык, называется Inform 7. Это DSL для создание игр в жанре interactive fiction(типа Adventure, Zork, итд).

    Вот разрозненные примеры "кода" на этом языке:
    Martha is a woman in the Vineyard.
    
    The cask is either customs sealed, liable to tax or stolen goods. 
    
    The prevailing wind is a direction that varies. 
    
    The Old Ice House overlooks the Garden. 
    
    A container is bursting if the total weight of things in it is greater than its breaking strain.


    Вот пример целой "программы"(взято из описания на wikipedia):

    "Hello Wikipedia" by A Wikipedia Contributor

    The story headline is "An Interactive Example".

    The Living Room is a room. "A comfortably furnished living room."
    The Kitchen is north of the Living Room.
    The Front Door is south of the Living Room.

    The insurance salesman is a man in the Living Room.
    The description is "An insurance salesman in a tacky polyester suit.
    He seems eager to speak to you." Understand "man" as the insurance salesman.

    A briefcase is carried by the insurance salesman.
    The description is "A slightly worn, black briefcase."
    Understand "case" as the briefcase.

    The insurance paperwork is in the briefcase.
    The description is "Page after page of small legalese."
    Understand "papers" or "documents" or "forms" as the paperwork.

    Instead of listening to the insurance salesman:
    say "The salesman bores you with a discussion of life insurance policies. From his briefcase he pulls some paperwork which he hands to you.";
    now the player carries the insurance paperwork.

    Re[26]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 07.09.06 17:15
    Оценка: -1
    Здравствуйте, VladD2, Вы писали:

    VD>Вы, поклонники Смолтока, сидите на этих комнях и упорно их не видите. Для меня это очевидные грабли. Для вас вполне нормальная вещь.


    С равным (совершенно равным!) успехом можно пульнуть исключение из любого метода в языке, подобном C++. Например, так:

    void SomeClass::func(OtherClass *p)
    {
      // ... Делаем что-то
        int intermediate = p->get_some_data(); // И шарахнуть отсюда exception
        // ... Должны бы снова делать что-то
    }


    И хотя такая возможность есть, но реальную проблему она создаёт нечасто. Точно также и с передачей блоков кода, которые могут содержать "неожиданный возврат". Ну не надо передавать такие блоки кода — и не будет проблемы. Дисциплина-с определённая, знаете ли. Зато местами это может быть очень удобно. Просто интересная возможность сама по себе — изменить граф выполнения функции (метода) извне. Рисковано порой, вероятно, но...

    Кстати, перекликается с "проблемами C++" — C++ тоже требует с головой дружить.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[14]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 17:56
    Оценка: :)
    Здравствуйте, VladD2, Вы писали:

    FDS>>Да, например в мае на C#, правда она у меня динамически компилировалась прямо в runtime в зависимости от ввода пользователя. Это было ужасно и я не знаю, как это сделать лучше... Вообще, с генерацией кода у меня всё плохо, но по ней совершенно нет ничего понятно написанного.


    VD>Вот макросы — это способ сделать это не просто лучше, а почти идиально. Правда в компайлтайме, но все же.


    Идеально?

    FDS>>С макросами не так всё — я просто не понимаю как так можно что-то писать и я не вижу нормальной (строгой) документации по макросам.


    VD>Документация есть. Зайти да nemerle.org или просто прочти статьи на нашем стайте.


    Я именно их и смотрел (и там, и там). Первым делом. Но создалось впечатление, что они пытаются научить языку по примерам. Я так и не нашёл ничего похожего на спецификаию C#.

    Например, где найти ответ на вопрос, как работает это:
        def F2(x: int): int -> int
        {
            def FC(y: int): int
            {
                2*y + x
            }
            FC
        }
        def F1(x: int): int
            {
                    F2(x)(5)
        }
    F1(5)

    и работает ли вообще? Как это будет воспринято компилятором?

    Или, например, я не нашёл ответ на вопрос: могу ли я во время компиляции выделить макросом кусок уже разобранного nemerle кода и выполнить с ним специфические действия (например, проверку на освобождение ресурсов или на диапазон выходных значений по заданным входным и выходным)? Могу ли я во время компиляции выполнить некоторые операции программы пользователя в штатном режиме (что-то вроде встроенного ЮТ)? [и как мне это сделать и где это описано]

    Может это и есть где-то, но я не заметил

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


    VD>Давай конкретно. Что не понятно?


    См. выше, про доступ к синтаксическому дереву.
    Если я макросом генерирую другой макрос, как мне избавиться от квазицитирования, т.е. что бы компилятор не подставлял во время компиляции значение переменной Name в <[$Name]>

    Почему это:
    macro m(x: int)
    {
        for (mutable i = x - 1; i >= 0; i--) 
        {
            <[
                System.Console.WriteLine("ss {0}", $x);
            ]>
        }
    //    <[()]>
    };
    
    ----
    macro1.n:14:1:14:25: ←[01;31merror←[0m: in argument #2 (tl) of list[System.Objec
    t-], needed a list[Nemerle.Compiler.Parsetree.PExpr.Literal-], got list[int-]: c
    ommon super type of types [Nemerle.Compiler.Parsetree.PExpr.Literal, int] is jus
    t `System.Object', please upcast one of the types to `System.Object' if this is
    desired

    даёт ошибку (приведена после черты)?

    В общем, некоторые вопросы рассеялись, когда я думал, что мне непонятно конкретно. Но всё равно, ощущение такое, что макросам нехватает целостности (строгости концепции).

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


    VD>Пожалуйста. По убыванию "прикольности".


    Спасибо

    VD>1. Сопоставление с образцом (в том числе и в foreach) и алгеброические типы (variant-ы).


    Локальные функции круче Хотя теперь не придётся создавать массивы.

    VD>2. Локальные функции.


    В Delphi есть, кстати, безопаснее (хотя и менее функционально). Там, по крайней мере, нельзя написать то, что я привёл выше .
    Вообще говоря, непонятно, почему они безопасностью пожертвовали ради передачи вложенных функций в вызовы другим [невложенным] функциям

    VD>4. Вывод типов.

    Так и не понял, что это даёт. Кроме экономии кода, конечно (кажется, это уже обсуждали на форуме?)

    VD>7. Отсуствие граблей (например, оператора as).

    Мне то же понравилось

    VD>8. Частичное применение функций и операторов.

    VD>9. Сплайсебл-строки.
    Не нашёл ни 9, ни 8. Может дадите ссылку на конкретный документ?

    VD>11. Бесплатная концевая рекурсия.


    Не заметил, спасибо. Я думал, что они там все на функциональном программировании совсем свихнулись

    VD>12. Краткий синтаксис работы со спискам и встроенные в язык списки.


    А за чем они такие нужны (если их нельзя изменять)? В документации написано, что часто используются, но я так и не понял где

    VD>Пунктов еще много, но уже этих более чем достаточно. Да если честно.
    Re[27]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 18:16
    Оценка:
    Здравствуйте, Beam, Вы писали:

    B>Если такое сделать на Smalltalk то будет сгенерировано исключение.


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

    B>Для пользователя метода ifTrue:ifFalse: даже если передать в них блок с ^ возврат будет происходить всегда предсказуемо.


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

    B>Вы можете не использовать это.


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

    А так можно и про С сказать, что он вполне безопасен так как в нем тоже много чего можно не использовать.

    B> Аналогичной функциональности можно добиться и без использования возврата из блока.


    Можно. Но если такая возможность есть, то он обязательно будет использована. Причем в отличии от goto в каком-нибудь C# я не смогу запретить использование ^ так как на 1 кривой вызов будет 100 нормальных.

    B> Так же как например Вы можете не писать в Java и С# return в ветке if, а дойти до конца метода и выполнить return.


    return в этих языках структурных оператор.

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


    Не видишь, не влезай в разговор. Даже смешно. Откуда эта ветка по-твоему началась?
    Изучай первоисточник:
    Re[6]: Насколько важен синтаксис языка?
    Автор: Andrei N.Sobchuck
    Дата: 05.09.06

    точнее начало здесь:
    Re[4]: Насколько важен синтаксис языка?
    Автор: Andrei N.Sobchuck
    Дата: 04.09.06
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[27]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 18:16
    Оценка: -3 :))
    Здравствуйте, eao197, Вы писали:

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


    E>Собственно, так и есть.


    Кто бы спорил. Ты один из них и есть.

    VD>>Вы, поклонники Смолтока, сидите на этих комнях и упорно их не видите. Для меня это очевидные грабли. Для вас вполне нормальная вещь.


    E>Грабли видят (точнее, ощущают, те, кто на них наступают). Если смолторкеры говорят, что они программируют на SmallTalk и не натыкаются на эти грабли, а ты, не программируя на SmallTalk, говоришь, что видишь эти грабли...


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

    E>И при работе в Ruby я лично ни разу не видел, чтобы это стало граблями. Ни разу.


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

    ANS>Тяжело вам там в .Net. В ST не работала бы только одна функция.


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

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

    LCR>Ммм.. Нет, конечно. Но и твоя, и моя оценка субъективна.


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

    ГВ>Что за гнусные инсинуации! Разумеется, прочитал. И всё равно не оскорбился. Ну искрит время от времени, велика важность! ИМХО, с этого вреда гораздо меньше, чем с высказываний типа: "Кто не следует майнстриму, у того нет ума".


    Ой, а можно ссылку на эту цитату?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[16]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 18:21
    Оценка:
    Здравствуйте, Turtle.BAZON.Group, Вы писали:

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


    TBG>>>Интерпертатор и среда Emacs с настроенным SLIME (Superior Lisp Interaction Mode for Emacs)


    FDS>>Ссылка не работает.


    TBG>Странно. Только что проверил — работает...


    Да, действительно. Правда для меня 26 мегов это слишком круто , но всё равно спасибо
    Re[31]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 18:26
    Оценка: +1
    Здравствуйте, Beam, Вы писали:

    B>Где можно ошибиться при наборе timesRepeat(10): в слове timesRepeat (синтаксическая ошибка) или в числе 10 (логическая).

    B>А теперь посмотрите на кучу мест, где можно совершить ошибки в for (да, я прекрасно понимаю, что набивание таких конструкций доведено до автоматизма, но все же).

    Ну, я бы сказал, что for в этом смысле просто дольше набирать. А так ведь и понимание таких отрывков доведено до автоматизма.

    B>Этот пример показывает, что даже в таком простом коде имеются предпосылки к удалению дублирования.

    B>В данном случае Вы убрали дублирование кода: удалили введение локальной переменной, присваивание, сравнение, увеличение переменной.

    FDS>>Возможно я не понял, что именно удобно


    B>Удобно то, что можно не меняя язык вводить такие конструкции как timesRepeat(number) { }

    B>Разве Вы не пользовались бы таким оператором?

    Таким, скорее всего, нет. Это только добавляет в код ненужную сложность, заставляя думать ещё об одном операторе. У меня в каждой функции не больше одного цикла, так что вряд ли эта конструкция сильно бы помогла.
    Re[13]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 07.09.06 18:27
    Оценка: -4
    Здравствуйте, VladD2, Вы писали:

    ГВ>>Что за гнусные инсинуации! Разумеется, прочитал. И всё равно не оскорбился. Ну искрит время от времени, велика важность! ИМХО, с этого вреда гораздо меньше, чем с высказываний типа: "Кто не следует майнстриму, у того нет ума".


    VD>Ой, а можно ссылку на эту цитату?


    Запросто. Re[10]: ООП &mdash; перспективы
    Автор: IT
    Дата: 20.06.06
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[27]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 18:37
    Оценка:
    Здравствуйте, Beam, Вы писали:

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


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

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

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


    B>Если такое сделать на Smalltalk то будет сгенерировано исключение.


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

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


    B>Для пользователя метода ifTrue:ifFalse: даже если передать в них блок с ^ возврат будет происходить всегда предсказуемо.


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


    Да, а методы завершаются все, которые находятся в стеке выше, чем "текущий", который вовсе не текущий...

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


    B>Вы можете не использовать это. Аналогичной функциональности можно добиться и без использования возврата из блока. Так же как например Вы можете не писать в Java и С# return в ветке if, а дойти до конца метода и выполнить return.


    Да, но другой человек может использовать это и вам всё равно придётся следить, что бы он что-нибудь не наделал — эта возможность непрозрачна.
    Re[25]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 18:39
    Оценка: +2
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    VD>>Большинство языков намерянно не позволяют сделать этого.


    ANS>Таких языков уже нету. Умерли или были пофикшены давным-давно. Хинт: механизм исключений.


    Исключения генерируются тогда, когда выражение всё равно уже не может быть вычисленно. А в штатном режиме языки этого делать не позволяют
    Re[27]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 18:44
    Оценка:
    Здравствуйте, eao197, Вы писали:


    E>В Ruby, к примеру, блок кода можно создать либо через Proc.new (конструирование путем создания нового экземпляра объекта-блока), либо методом Kernel#lambda:

    E>
    E>block_with_nonlocal_return = Proc.new { return }
    E>block_with_local_return = lambda { return }
    E>

    E>Блоки, созданные через Proc.new ведут себя так же, как блоки с ^ в SmallTalk (по крайней мере, насколько я понял из описаний смолтолкеров) -- применение в чужом контексте приведет к порождению исключения.

    Т.е. они не могут передать возврат или исключение куда-то, кроме как в вызвавшую их функцию? Если да — то ваши аргументы некорректны, так как мы спорим о передаче управления скачком в метод, отделённый в стеке вызовов другими методами

    Блоки, созданные через lambda, напротив, не прерывают работу вызвавшего их кода -- происходит возврат только из тела лямбды:
    E>
    E>irb(main):001:0> def sample(&block)
    E>irb(main):002:1> block.call
    E>irb(main):003:1> end
    E>=> nil
    E>irb(main):004:0> sample &Proc.new { return }
    E>LocalJumpError: unexpected return
    E>        from (irb):4
    E>        from (irb):2:in `sample'
    E>        from (irb):4
    E>irb(main):005:0> sample &lambda { return }
    E>=> nil
    E>irb(main):006:0>
    E>

    E>И при работе в Ruby я лично ни разу не видел, чтобы это стало граблями. Ни разу.
    Они прерывают свою работу и возвращают управление в тело вызвавшего их метода, а не метода, где они были описаны. Так?
    Re[27]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 18:45
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>И хотя такая возможность есть, но реальную проблему она создаёт нечасто. Точно также и с передачей блоков кода, которые могут содержать "неожиданный возврат". Ну не надо передавать такие блоки кода — и не будет проблемы. Дисциплина-с определённая, знаете ли. Зато местами это может быть очень удобно. Просто интересная возможность сама по себе — изменить граф выполнения функции (метода) извне. Рисковано порой, вероятно, но...


    В этом споре было сказано, что эта возможность применяется часто.
    Re[25]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 18:46
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


    VD>>Это возможно, но не элементарно.


    ANS>В каком-то частном случае — возможно. В общем — нет.


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

    К>Здравствуйте, Andrei N.Sobchuck, Вы писали:


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


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


    ANS>>Ран-тайм исключение.


    К>Не вижу тогда практического смысла в этом (в нелокальных возвратах из блока) и блоки наружу передавать становится проблемно — каждый раз добавлять обработку исключений?


    И куда ты добавишь обработку исключений, если вызывающий метод уже завершился? Ты нашёл ещё одну проблему.
    Кстати, о ламерах
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 07.09.06 18:48
    Оценка: :))) :)))
    Здравствуйте, Master Yoda, Вы писали:

    MY>Кстати аппеляция к понятию "ламеризм", которое не имеет четко определенной семантики [...]


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

    Ну или в русской ироничной интерпретации: ламер, это чайник, считающий себя круто заваренным.

    Так что, семантика вполне определённая.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[18]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 18:51
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

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


    VD>>Блок без оператора "^" является классической Лямбдой с лексическим замыканием и присутствует во многих языках (в том же C#, например). А с ним является граблями ждущими своего часа.


    EB>25 лет ожиданий — слегка слишком долго для граблей


    Тяжёленкие такие инертные грабли....
    Re[28]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 07.09.06 18:53
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    ГВ>>Рисковано порой, вероятно, но...

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

    Я знаю. Значит, есть какие-то наработанные способы правильного использования такой фичи.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[20]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 18:57
    Оценка:
    Здравствуйте, Beam, Вы писали:

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


    Там, как уже сказали, брошено исключение. Но в Java это считается плохо, так как исключение используется не для того, для чего предназначено
    Re[12]: Насколько важен синтаксис языка?
    От: fmiracle  
    Дата: 07.09.06 19:00
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

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


    Вот это ключевой момент.
    У меня вот почему-то такое впечатление, что такие однообразные и прмитивные задачи возникают не из-за некой темной силы мейнстрима, а из-за потребностей заказчиков в решении именно этих задач.
    Если люди, которым нужно решить определенные задачи. И средство надо выбирать — которе позволит наиболее эффективно решить именно эти задачи, а не то, которое даст разработчку возможность хорошо поразвлекаться.

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

    Каждой задаче — свое средство. Интересность/скучность задачи зависят от самой задачи, а никак не от используемого средства для ее решения.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[13]: Насколько важен синтаксис языка?
    От: fmiracle  
    Дата: 07.09.06 19:00
    Оценка: 2 (2) +4
    Здравствуйте, Дарней, Вы писали:

    E>>С таким же успехом ты мог прозевать еще десяток-другой успешных стартапов.


    Д>Если стартап по настоящему успешен, то прозевать его просто не дадут. Мы ведь не в каменном веке все-таки, кругом сплошное информационное пространство


    Боюсь, это ты несколько погорячился...
    Что такое по настоящему успешный стартап? Тут надо определиться, иначе будет полное непонимание.

    Вот рассмотрим. Человек организует стартап с капиталом в 50.000$. Через год он заканчивает проект, внедрив созданную систему у какого-то очень крупного клиента (внутри — это была закрытая разработка) — и уходит в длительный отпуск обдумывать идею следующего стартапа имея капитал в 500.000$

    Это успешный стартап? Для тебя — видимо нет, про него прочти никто ничего не услышит. А вот для меня 1000% годовых — это ооочень успешный стартап!

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

    Нет, я думаю что успешными можно назвать гораздо больше стартапов, про те, про которые ты или я или кто-то еще здесь — слышали. То, о чем становится известно по всему миру — это супер успешные стартапы.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[21]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 19:01
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>Что касается "выражений посложнее": в Smalltalk средний размер метода — 6-7 строк. Включая определение переменных и прочее. Где тут можно сделать "блок посложнее"?


    Это можно написать про любой язык. Только вот на практике почему-то далеко не все так делают
    Re[21]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 19:06
    Оценка:
    Здравствуйте, nostromo, Вы писали:

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


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


    N>В Smalltalk тоже нельзя прервать выражение.

    N>Например:
    N>
    N>SomeClass>>foo
    N>|a b|
    N>    a := self bar. "возвращает что-то типа [:x | ^x + 42]"
    N>    b :=  a value. "сюда мы уже не попадем, потому что предыдущая строка вызовет исключение"
    N>    ...
    N>


    N>При попытке вызова этого метода в любезно предложенном отладчике мы увидим следующее (VisualWorks):

    N>
    N>cannotReturn: value 
    N>    "Raise a signal which means that the reciever attempted to return 
    N>    (with the supplied value), but its sender cannot be returned into 
    N>    (e.g. sender is nil, probably because the receiver already returned). 
    N>    This message is sent by the execution machinery (the VM or some
    N>    execution simulator such as a debugger)."
    
    N>    CannotReturnError new
    N>        context: self;
    N>        parameter: value;
    N>        raise
    N>


    N>Отмечу также, что вместо

    N>(...) ifTrue: [^0] ifFalse: [^1].
    N>можно (и рекомендуется) писать так:
    N>^(...) ifTrue: [0] ifFalse: [1].

    Не дошло, почему исключение было вызвано? Можно прокомментировать подробнее?
    Re[15]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 19:10
    Оценка: :)
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


    VD>>ОК. Подойди к любому квалифицированному C#- или Java-программисту или архитектуру и проконсультируйся у него по пводу того что он думает об исползовании исключений и их обработки для реализации логики приложения. Уверяю тебя стандартная реакция будет "руки (мягко говоря) надо отрывать тем уродом (тоже мягко говоря) которые это делают".


    ANS>-1. Безаргументная апеляции к мифическому массовому супер-опыту и плавный переход на личности.


    VladD2 говорит 100% правильно — так всё и есть. Спроси у любого. Лучше скажи, как вы в SmallTalk избегаете ошибок, связанных с неструктурным переходом. Вот это будет интересно послушать.
    Re[14]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 19:13
    Оценка:
    Здравствуйте, FR, Вы писали:

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


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


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


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


    FR>А дольфин вполне вероятно (точно не знаю) написан на смалтоке и использует GUI библиотеку MFC написанную на C++.


    А кто-то при этом хвастается, что она полностью на SmallTalk. См. выделенное
    Re[15]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 07.09.06 19:15
    Оценка: +2
    Здравствуйте, FDSC, Вы писали:


    FDS>В Delphi есть, кстати, безопаснее (хотя и менее функционально). Там, по крайней мере, нельзя написать то, что я привёл выше .

    FDS>Вообще говоря, непонятно, почему они безопасностью пожертвовали ради передачи вложенных функций в вызовы другим [невложенным] функциям

    В дельфи как раз опаснее

    Re[4]: Почему у Nemerle нет будущего
    Автор: FR
    Дата: 05.08.06
    Re[10]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 19:16
    Оценка:
    Здравствуйте, vdimas, Вы писали:

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


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


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


    Да, я сам пользовался AutoCAD, но какие преимущества даёт САМ ЛИСП, а не его лёгкость написания? Мы же говорим про программирование на ЛИСП, а не про его написание. С этим никто не спорит (хотя, что знает, кто знает)

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


    V>Не знаю, мне регулярно попадались на глаза проги, где в качестве скрипт-машины использовали Лисп. Может ты просто невнимательно смотрел? Не поленись, выйди на любой сайт, посвященный Лиспу, там полно ссылок на готовые продукты и прочие success story.


    Это точно, но связи не вижу. Где она?
    Re[16]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 19:18
    Оценка:
    Здравствуйте, FR, Вы писали:

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



    FDS>>В Delphi есть, кстати, безопаснее (хотя и менее функционально). Там, по крайней мере, нельзя написать то, что я привёл выше .

    FDS>>Вообще говоря, непонятно, почему они безопасностью пожертвовали ради передачи вложенных функций в вызовы другим [невложенным] функциям

    FR>В дельфи как раз опаснее


    FR>Re[4]: Почему у Nemerle нет будущего
    Автор: FR
    Дата: 05.08.06


    Странно, когда я программировал, мне в таких случаях ВСЕГДА выдавалась ошибка времени компиляции. Возможно, речь о pascal'е, а не о Delphi. В общем, даже не знаю, что сказать
    Re[29]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 19:20
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

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


    ГВ>>>Рисковано порой, вероятно, но...

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

    ГВ>Я знаю. Значит, есть какие-то наработанные способы правильного использования такой фичи.


    ГДЕ ОНИ. Я уже раза три просил сказать правила, в которых используются нелокальные возвраты.
    Re[14]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 19:23
    Оценка:
    Здравствуйте, fmiracle, Вы писали:

    F>Это успешный стартап? Для тебя — видимо нет, про него прочти никто ничего не услышит. А вот для меня 1000% годовых — это ооочень успешный стартап!


    Для меня тоже, присоединяюсь

    F>А если человек продает свои наработки в другую компанию — типа Сан или Микрософт, а там выпускают в свет через пару лет, после того, как очень сильно изменят — кто услышит о таком стартапе? Когда он станет известен — он будет известен как разработка этой большой корпорации и никто даже думать не будет о нем как о стартапе. А изначальный создатель мог при этом получить такой доход, что до конца жизни сможет писать на Лиспе чисто для собственного удовольствия, не заморачиваясь такими банальностями, как зарабатывание денег


    Не проверяемо, но похоже на правду

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


    Почему тогда эти супер успешные стартапы не на LISP?
    Re[16]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 19:26
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

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


    FDS>>>>Что же это за преимущества, которые не дают экономических преимуществ при разработке ПО?

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

    ГВ>Окстись! Слово-то такое "Lisp" слышали не все, а пользоваться им умеют и не боятся ещё более редкие представители. Из этих редких единиц ещё более редкие единицы действительно будут стартапить. Не все же спят и видят, как бы заняться собственным стартапом. Откуда тут "волна" стартапов выпрыгнет?


    Спят-то они может и видят, только реально не занимаются.

    FDS>>Собственно, вот логика. Если вас логика не устраивает, объясните почему (вы её уже назвали "наивной", но всё же)


    ГВ>Наивность тут проявляется в упрощении: полагается, что многие знают Лисп и многие же рвутся стартапить. На самом деле это далеко не так.


    ГВ>На основании этих упрощённых рассуждений делается вывод о мнимости качеств Lisp, SmallTalk и прочих подобных. Ну не ерунда?


    Не могу согласиться, не могу не согласиться. Здесь нужно слишком серьёзное исследование. Но я вас понял, спасибо.
    Re[25]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 19:28
    Оценка: +1
    Здравствуйте, Дарней, Вы писали:

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


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


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


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


    Д>кроме энтузиазма надо еще иметь голову на плечах.


    Кроме маркетинга ещё есть "предприимчивость". В общем, тут врядли можно нормально спорить, вполне возможно, что у пары хороший-плохой есть больше шансов, чем у двоих хороших или двоих плохих. При этом подразумевается, что только у "плохих" есть предприимчивость
    Re[3]: Кстати
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 19:31
    Оценка: :)
    Здравствуйте, Геннадий Васильев, Вы писали:

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


    FDS>>Он считается некорректным, потому что со сслыкой на опыт невозможно спорить по причине того, что опыт у всех разный.


    ГВ>Не подсказывай.


    Просто надоело читать, как один задаёт вопрос, а другой на него не хочет отвечать
    Re[13]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 19:35
    Оценка:
    Здравствуйте, _rasta, Вы писали:

    _>зы. вот интересно. если модераторам грамотно объяснить что они иногда не правы, должны ли они (модераторы), сами себя забанить?


    Нет, они должны попросить сделать это другого модератора, если конечно к тому времени остался хоть один вменяемый модератор
    Re[15]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 07.09.06 19:38
    Оценка:
    Здравствуйте, FDSC, Вы писали:


    FDS>А кто-то при этом хвастается, что она полностью на SmallTalk. См. выделенное


    Покажи мне этого мифического кого-то.
    Re[20]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 07.09.06 19:38
    Оценка:
    Здравствуйте, VladD2, Вы писали:


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


    Телепатия?

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


    Когда про C++ ругались помню ты что-то другое говорил
    Re[15]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 19:38
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:


    ГВ>Знаешь, порой много экономичнее вместо долгого разбора по кусочкам, многокилобайтного вычисления ошибок и их разбора, вычленения неправомерных обобщений и усилений... В общем, вместо анализа просто сказать: автор — ламер. Тем более, когда такие вещи видны не вооружённым глазом.


    Варварство, бросание тухлых яиц...
    Нужно объяснять человеку где он ошибся, а не просто обзываться: ему то не понятно, раз он глупость написал
    Re[12]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 19:40
    Оценка: :)))
    Здравствуйте, Геннадий Васильев, Вы писали:

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


    ГВ>>>Почему я никакой маскировки не заметил? Что я сделал не так?

    S>>Не прочитал.

    ГВ>Что за гнусные инсинуации! Разумеется, прочитал. И всё равно не оскорбился. Ну искрит время от времени, велика важность! ИМХО, с этого вреда гораздо меньше, чем с высказываний типа: "Кто не следует майнстриму, у того нет ума".


    Когда двигатель искрит, он быстро перегорает. Эффект кольцевого искрения при работе коллекторных ДПТ не допустим!
    Re[2]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 19:43
    Оценка:
    Здравствуйте, Beam, Вы писали:

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


    К>>Так вот — хотелось бы рассмотреть вопрос: насколько синтаксис языка определяет его удобство для использования?


    B>Прочитал я сейчас определение синтаксиса (естественного языка) и осознал, что в зону его влияния не входят слова языка (т.е. лексика), а входят лишь правила построения связной речи.


    B>Может в этом и есть секрет таких языков как Lisp, Smalltalk, J, ... (продолжите список)? Ведь в них как раз и имеется минимальный синтаксис, который:

    B>
    B>Я не силен в науке о русском языке (кстати, как называется?), так что поправьте если что.


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

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



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


    FR>Телепатия?


    О чём вы? Ведь правильно всё сказано, а исходное сообщение было явно провокационным
    Re[30]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 07.09.06 19:51
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    ГВ>>>>Рисковано порой, вероятно, но...

    FDS>>>В этом споре было сказано, что эта возможность применяется часто.
    ГВ>>Я знаю. Значит, есть какие-то наработанные способы правильного использования такой фичи.
    FDS>ГДЕ ОНИ. Я уже раза три просил сказать правила, в которых используются нелокальные возвраты.

    Увы. Это — не ко мне. Хотя крик души понятен.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[15]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 07.09.06 19:51
    Оценка:
    Здравствуйте, FDSC, Вы писали:

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

    FDS>Почему тогда эти супер успешные стартапы не на LISP?

    Это надо у них самих спрашивать, почему они Lisp не взяли. В ФП ты по большей части только общие рассуждения услышишь.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[13]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 07.09.06 19:51
    Оценка: +3
    Здравствуйте, fmiracle, Вы писали:

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


    F>Вот это ключевой момент.

    F>У меня вот почему-то такое впечатление, что такие однообразные и прмитивные задачи возникают не из-за некой темной силы мейнстрима, а из-за потребностей заказчиков в решении именно этих задач.

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

    F>Если люди, которым нужно решить определенные задачи. И средство надо выбирать — которе позволит наиболее эффективно решить именно эти задачи, а не то, которое даст разработчку возможность хорошо поразвлекаться.


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

    А возникает она порой из-за того, что нечто оказалось "принято, а следовательно — надо".

    F>Программирование ради программирования — это как бег ради бега. Хорошее занятие — позволяет поддерживать себя в форме. И полученный навык зачастую может пригодиться в жизни. Однако на работу на другой конец города разумнее ездить в метро или на машине, а не бегать самому, даже если ты способен пробежать 30км без остановки.


    Если бегать — удовольствие, то можно и на работу пробежаться. Ездят же на велосипеде на работу. "Разумность" здесь выражается в скорости доставки от дома до офиса и в том, что не нужно оборудовать офис душевой кабиной.

    F>Каждой задаче — свое средство. Интересность/скучность задачи зависят от самой задачи, а никак не от используемого средства для ее решения.


    Тоже верно. Но это не означает, что средства, используемые для "скучных" задач однозначно "лучше" и "качественнее" каких-то других.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[15]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.09.06 19:54
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    VD>>Вот макросы — это способ сделать это не просто лучше, а почти идиально. Правда в компайлтайме, но все же.


    FDS>Идеально?


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

    Реализация у макросов Немеле не супер, но очень даже нечиго. А идеология вообще лучшая из виданного мной. Есть конечно некоторые компромисы, но они лично для меня очевидны.

    FDS>Я именно их и смотрел (и там, и там). Первым делом. Но создалось впечатление, что они пытаются научить языку по примерам. Я так и не нашёл ничего похожего на спецификаию C#.


    Так и есть, но спецификация совершенно не обязательна для изучения языка.

    FDS>Например, где найти ответ на вопрос, как работает это:

    FDS>
    FDS>    def F2(x: int): int -> int
    FDS>    {
    FDS>        def FC(y: int): int
    FDS>        {
    FDS>            2*y + x
    FDS>        }
    FDS>        FC
    FDS>    }
    FDS>    def F1(x: int): int
    FDS>        {
    FDS>                F2(x)(5)
    FDS>    }
    FDS>F1(5)
    FDS>

    FDS> и работает ли вообще? Как это будет воспринято компилятором?

    За исключением того, что программа не использует значение функции F1 и ничего не выводит, она совершенно корректа. Далает она следующее. Функция F2() возвращает другую функцию которая производит вычисления над своим параметром y и значением параметра x захваченным замыканием. Далее производится вызов этой функии с передачей ее значения.

    Вот только можно было бы опустить типы параметров. Все и так очевидно. Так что вот такой код:
    using System.Console;
    
    def F2(x)
    {
      def FC(y) { 2 * y + x }
    
      FC
    }
    
    def F1(x) { F2(x)(5) }
    
    WriteLine(F1(5))

    выведет 15. А такой:
    using System.Console;
    
    def F2(x)
    {
      def FC(y) { 2 * y + x }
    
      FC
    }
    
    def F1(x) { F2(x)(5) }
    
    WriteLine(F1(100))

    естественно 110.

    Смысла он не имеет, но демонстриует одно из важных свойств языка — вычисления над фукнциями. Практически все тоже самое, но более грамоздко можно сделать и на C# 2.0. Вот аналогичный код:
    using System;
    
    delegate int MyDelegate(int x);
    
    class Program
    {
        static MyDelegate F2(int x)
        {
            MyDelegate FC = delegate(int y) { return 2 * y + x; };
    
            return FC;
        }
    
        static int F1(int x) { return F2(x)(5); }
    
        static void Main()
        {
            Console.WriteLine(F1(100));
        }
    }


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

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


    Такие вопросы можно задать на форуме. Если вопрос действительно интересен, то отвечу — можно. Хотя это и не тривиально.

    FDS> Могу ли я во время компиляции выполнить некоторые операции программы пользователя в штатном режиме (что-то вроде встроенного ЮТ)? [и как мне это сделать и где это описано]


    Хм. До окончания компиляци кода копилируемого приложения нет. Так что выполнить его невозможно. Юнит-тесты можно вмонтировать в код сборки или даже незаметно создать еще одну сборку с юнит-тестами.

    В общем, макросы — это код который выполняется во время компиляции другого кода. Другой код исполнить можно толко если его докомпилировать.

    FDS>Может это и есть где-то, но я не заметил


    На такие вопросы ответы в документации найти невозможно в принципе. Но их можно задать на форуме.

    FDS>Если я макросом генерирую другой макрос, как мне избавиться от квазицитирования,


    Насколко я знаю макросом нельзя сгенерировать другой макрос.

    FDS>Почему это:

    FDS>
    FDS>macro m(x: int)
    FDS>{
    FDS>    for (mutable i = x - 1; i >= 0; i--) 
    FDS>    {
    FDS>        <[
    FDS>            System.Console.WriteLine("ss {0}", $x);
    FDS>        ]>
    FDS>    }
    FDS>//    <[()]>
    FDS>};
    
    FDS>----
    FDS>macro1.n:14:1:14:25: ←[01;31merror←[0m: in argument #2 (tl) of list[System.Objec
    FDS>t-], needed a list[Nemerle.Compiler.Parsetree.PExpr.Literal-], got list[int-]: c
    FDS>ommon super type of types [Nemerle.Compiler.Parsetree.PExpr.Literal, int] is jus
    FDS>t `System.Object', please upcast one of the types to `System.Object' if this is
    FDS>desired
    FDS>

    FDS> даёт ошибку (приведена после черты)?

    Видимо потому что нужно как-то так:
    macro m(x : int)
    {
      mutable result = [];
    
      for (mutable i = x - 1; i >= 0; i--) 
        result ::= <[ System.Console.WriteLine("ss {0}", $(x : int)); ]>;
    
      <[ { ..$result } ]>
    }

    1. Макрос обязан вернуть одно выражение. Тут же их много, так что нужно завернуть их в блок. Последняя команда как раз это и делает. В цикле же формируется список выражений которые потом помещаются в блок.
    2. Параметр х является целым числом для макроса, а требуется литерал. Тут требется подсказка компилятору, что нужно преобразовать значение из переменной х в литерал. Конечно компилятор мог бы быть и по умнее. Но и так не плохо по сравению с тем что приходится вытворять в подобных случаях при других способах генерации кода.

    FDS>В общем, некоторые вопросы рассеялись, когда я думал, что мне непонятно конкретно. Но всё равно, ощущение такое, что макросам нехватает целостности (строгости концепции).


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

    FDS>Локальные функции круче Хотя теперь не придётся создавать массивы.


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

    VD>>2. Локальные функции.


    FDS>В Delphi есть, кстати, безопаснее (хотя и менее функционально). Там, по крайней мере, нельзя написать то, что я привёл выше .


    В Дельфи как локальные функции и на ёту не приближаются к этим. Эти являются замыканиями и могут использовать весе что объявлено перед ними.

    А вот безопасными они как раз не являются. Дельфи вообще не безопасный язык. Если передать адрес на них извне основной функции будут еще те вылеты. В Дельфи НЭТ конечно все лучше.

    FDS>Вообще говоря, непонятно, почему они безопасностью пожертвовали ради передачи вложенных функций в вызовы другим [невложенным] функциям


    Где ты увилил жертву безопасности? Это Дельфи небезопасна в туче мест. А Немрле один из самых безопасных языков которые я видел.

    Что ты понимаешь под термином "безопасно" и "небезопасно".

    VD>>4. Вывод типов.

    FDS>Так и не понял, что это даёт. Кроме экономии кода, конечно (кажется, это уже обсуждали на форуме?)

    Это и дает. Лишнего в коде нет. Код становится короче и стало быть понятнее. Если нужно изнать тип чего-то, то просто подвидишь мышьку в IDE и смотришь хинт.

    VD>>8. Частичное применение функций и операторов.

    VD>>9. Сплайсебл-строки.
    FDS>Не нашёл ни 9, ни 8. Может дадите ссылку на конкретный документ?

    Все описано в статье
    Автор(ы): Сергей Туленцев, Владислав Чистяков
    Дата: 23.05.2006
    Производительность труда программиста в основном зависит от самого программиста. Однако даже самый опытный и знающий программист мало что может без подходящего инструмента. Эта статья открывает цикл статей об одном из таких инструментов, еще мало известном среди программистов, но очень многообещающем. Язык Nemerle, о котором пойдет речь в этих статьях, на первый взгляд очень похож на слегка улучшенный C#, но привносит многое из передовых исследовательских языков. Данная статья рассказывает об отличиях Nemerle от C# (как наиболее близкого языка)и является неформальным введением в язык.
    . Сделай поиск по статье на $" (бакс и ковычка) и почитай что там написано. Частичному применению посвящен отдельный раздел Частичное применение и другие операции над функциями и операторами
    Автор(ы): Сергей Туленцев, Владислав Чистяков
    Дата: 23.05.2006
    Производительность труда программиста в основном зависит от самого программиста. Однако даже самый опытный и знающий программист мало что может без подходящего инструмента. Эта статья открывает цикл статей об одном из таких инструментов, еще мало известном среди программистов, но очень многообещающем. Язык Nemerle, о котором пойдет речь в этих статьях, на первый взгляд очень похож на слегка улучшенный C#, но привносит многое из передовых исследовательских языков. Данная статья рассказывает об отличиях Nemerle от C# (как наиболее близкого языка)и является неформальным введением в язык.
    .

    VD>>11. Бесплатная концевая рекурсия.


    FDS>Не заметил, спасибо. Я думал, что они там все на функциональном программировании совсем свихнулись


    Они дают в твое и мое распоряжение мощьные и удобные возможности. И глупо ими не пользоваться.

    VD>>12. Краткий синтаксис работы со спискам и встроенные в язык списки.


    FDS>А за чем они такие нужны (если их нельзя изменять)? В документации написано, что часто используются, но я так и не понял где


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

    ГВ>С равным (совершенно равным!) успехом можно пульнуть исключение из любого метода в языке, подобном C++. Например, так:


    Исключение на то и исключение, что после него программа уже работать не будет. Его или поймает обработчик, или вываится окошко. А вот передача управления никем поймана не будет. Это будет просто неверная работа программы. И понять, что ошибка произошла из-за неверной передачи уже будет очень не просто.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[16]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 07.09.06 20:00
    Оценка: 11 (1)
    Здравствуйте, FDSC, Вы писали:

    ГВ>>Знаешь, порой много экономичнее вместо долгого разбора по кусочкам, многокилобайтного вычисления ошибок и их разбора, вычленения неправомерных обобщений и усилений... В общем, вместо анализа просто сказать: автор — ламер. Тем более, когда такие вещи видны не вооружённым глазом.


    FDS>Варварство, бросание тухлых яиц...


    Нет, просто обозначение вещей своими именами.

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


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

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

    Но и оставлять глупости неоткомментированными тоже не хочется. Потому что иной колеблющийся может прочесть ахинею и принять её на веру. В итоге одним дураком станет больше, что не есть гуд.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[28]: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 07.09.06 20:02
    Оценка: 16 (1) +1
    Здравствуйте, VladD2, Вы писали:

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


    Странно написать код при котором от return произойдет исключение.

    VD>Изучай первоисточник:

    VD>Re[6]: Насколько важен синтаксис языка?
    Автор: Andrei N.Sobchuck
    Дата: 05.09.06

    VD>точнее начало здесь:
    VD>Re[4]: Насколько важен синтаксис языка?
    Автор: Andrei N.Sobchuck
    Дата: 04.09.06


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

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

    Например, в метод передается блок при вычислении которого должен быть возвращен SQL-запрос. Этот метод начинает транзакцию, вычисляет блок и вдруг ... прерывает свою работу. Транзакция не закрыта, возникли проблемы. Но я бы назвал это скорее ошибкой (передача неправильного параметра в метод), чем "хакерским приемом". Хотя такая ошибка трудно локализуется.

    Но в подавляющем большинстве случаев возвратов из блоков все-таки полезен и не приводит к ошибкам:
    includes: anObject 
        "Возвращает true если anObject является одним из элементов коллекции"
            
        | found |
        founded := false.
        self do: [:each | anObject = each ifTrue: [found := true]].
        ^found

    В этом коде return в блоках нет. Но нам понадобилась дополнительная переменная found

    includes: anObject 
        "Возвращает true если anObject является одним из элементов коллекции"
    
        self do: [:each | anObject = each ifTrue: [^true]].
        ^false

    А в этом коде return в блоке есть. Видно, что код стал более понятным — мы избавились от лишней переменной. Оба return в данном коде (и в блоке, и вне) обозначают одно и то же — завершение работы метода и возврат значения.

    Уверен, что Вы и сами часто используете эту технику.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[2]: Дополнение
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 07.09.06 20:14
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>Многие "ученые" по модели существования от этой мышки ничем не отличаются. Только сжирают они не зерно, а гранты.


    Если ты заметил, то слово "учёный" я в кавычки не брал.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[30]: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 07.09.06 20:14
    Оценка:
    Здравствуйте, FDSC, Вы писали:

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


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


    ГВ>>>>Рисковано порой, вероятно, но...

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

    ГВ>>Я знаю. Значит, есть какие-то наработанные способы правильного использования такой фичи.


    FDS>ГДЕ ОНИ. Я уже раза три просил сказать правила, в которых используются нелокальные возвраты.


    А я уже несколько раз отвечал... Обычно это используется, когда надо прервать работу метода не доходя до его конца.Так же как и в прочих языках.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[16]: Оффтопик: Nemerle
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 20:33
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    FDS>>Я именно их и смотрел (и там, и там). Первым делом. Но создалось впечатление, что они пытаются научить языку по примерам. Я так и не нашёл ничего похожего на спецификаию C#.


    VD>Так и есть, но спецификация совершенно не обязательна для изучения языка.


    Но лучше бы, если бы была

    VD>Вот только можно было бы опустить типы параметров. Все и так очевидно. Так что вот такой код:

    VD>
    VD>using System.Console;
    
    VD>def F2(x)
    VD>{
    VD>  def FC(y) { 2 * y + x }
    
    VD>  FC
    VD>}
    
    VD>def F1(x) { F2(x)(5) }
    
    VD>WriteLine(F1(100))
    VD>

    VD>естественно 110.

    VD>Смысла он не имеет, но демонстриует одно из важных свойств языка — вычисления над фукнциями.


    Я его тут скомпилировал. Прикол в том, что он у меня не работает: выдаёт exception. То ли у меня руки кривые и я его неправильно скомпилил, то ли не знаю что

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


    VD>Такие вопросы можно задать на форуме. Если вопрос действительно интересен, то отвечу — можно. Хотя это и не тривиально.


    Хм, на самом деле, было бы неплохо, если бы это описывалось в документации. Первое, что мне в голову пришло — это именно анализ дерева.

    FDS>> Могу ли я во время компиляции выполнить некоторые операции программы пользователя в штатном режиме (что-то вроде встроенного ЮТ)? [и как мне это сделать и где это описано]


    FDS>>Может это и есть где-то, но я не заметил


    VD>На такие вопросы ответы в документации найти невозможно в принципе. Но их можно задать на форуме.


    Видать, я жуткий бюрократ . А в каком их форуме задавать?

    VD>Видимо потому что нужно как-то так:

    VD>
    VD>macro m(x : int)
    VD>{
    VD>  mutable result = [];
    
    VD>  for (mutable i = x - 1; i >= 0; i--) 
    VD>    result ::= <[ System.Console.WriteLine("ss {0}", $(x : int)); ]>;
    
    VD>  <[ { ..$result } ]>
    VD>}
    VD>

    VD>1. Макрос обязан вернуть одно выражение. Тут же их много, так что нужно завернуть их в блок. Последняя команда как раз это и делает. В цикле же формируется список выражений которые потом помещаются в блок.
    VD>2. Параметр х является целым числом для макроса, а требуется литерал. Тут требется подсказка компилятору, что нужно преобразовать значение из переменной х в литерал. Конечно компилятор мог бы быть и по умнее. Но и так не плохо по сравению с тем что приходится вытворять в подобных случаях при других способах генерации кода.

    Спасибо (вы ответили сразу на три моих вопроса), но не вечно же у вас спрашивать, кода проблемы появляются , а со спецификацией я бы сам разобрался

    FDS>>Локальные функции круче Хотя теперь не придётся создавать массивы.

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

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

    VD>>>2. Локальные функции.


    ...

    VD>В Дельфи как локальные функции и на ёту не приближаются к этим. Эти являются замыканиями и могут использовать весе что объявлено перед ними.


    В Delphi функции то же могут использовать всё, что объявлено перед ними (исключая переменные других локальных функций)

    VD>>>4. Вывод типов.

    ...

    VD>Это и дает. Лишнего в коде нет. Код становится короче и стало быть понятнее. Если нужно изнать тип чего-то, то просто подвидишь мышьку в IDE и смотришь хинт.


    Ага, а если нет интергации с MS VS (1. не могу скачать последнюю версию непомню уже чего, 2. нефига не понимаю и т.п., в общем у меня не работает даже "простая" интеграция с VS, точнее работает, но на половину )

    VD>>>8. Частичное применение функций и операторов.

    VD>>>9. Сплайсебл-строки.
    FDS>>Не нашёл ни 9, ни 8. Может дадите ссылку на конкретный документ?

    VD>Все описано в статье
    Автор(ы): Сергей Туленцев, Владислав Чистяков
    Дата: 23.05.2006
    Производительность труда программиста в основном зависит от самого программиста. Однако даже самый опытный и знающий программист мало что может без подходящего инструмента. Эта статья открывает цикл статей об одном из таких инструментов, еще мало известном среди программистов, но очень многообещающем. Язык Nemerle, о котором пойдет речь в этих статьях, на первый взгляд очень похож на слегка улучшенный C#, но привносит многое из передовых исследовательских языков. Данная статья рассказывает об отличиях Nemerle от C# (как наиболее близкого языка)и является неформальным введением в язык.
    . Сделай поиск по статье на $" (бакс и ковычка) и почитай что там написано. Частичному применению посвящен отдельный раздел Частичное применение и другие операции над функциями и операторами
    Автор(ы): Сергей Туленцев, Владислав Чистяков
    Дата: 23.05.2006
    Производительность труда программиста в основном зависит от самого программиста. Однако даже самый опытный и знающий программист мало что может без подходящего инструмента. Эта статья открывает цикл статей об одном из таких инструментов, еще мало известном среди программистов, но очень многообещающем. Язык Nemerle, о котором пойдет речь в этих статьях, на первый взгляд очень похож на слегка улучшенный C#, но привносит многое из передовых исследовательских языков. Данная статья рассказывает об отличиях Nemerle от C# (как наиболее близкого языка)и является неформальным введением в язык.
    .


    Ужас. Прочитал. Вообще, я очень невнимательно читал статьи и документацию, виноват. Спасибо
    Re[31]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 20:39
    Оценка:
    Здравствуйте, Beam, Вы писали:

    FDS>>ГДЕ ОНИ. Я уже раза три просил сказать правила, в которых используются нелокальные возвраты.


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


    Не когда это используется, а какие ограничения в использовании. Вы же сами привели пример с транзакцией. Какие правила позволяют исключить такую ошибку? Проще говоря, при небезопасной возможности языка должно быть очевидное правило, которое позволяет его безопасно использовать. Судя по высказываниям любителей SmallTalk, это правило существует. Вот я и хочу знать, какое оно?
    Re[3]: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 07.09.06 20:40
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    B>>Может в этом и есть секрет таких языков как Lisp, Smalltalk, J, ... (продолжите список)? Ведь в них как раз и имеется минимальный синтаксис, который:

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


    Это позволит повышать уровень абстракции, а это приведет к снижению количества логических ошибок. Причем к уменьшению на порядки по сравнению с тем количеством, которые сможет выявить компилятор на предыдущем уровне абстракции (сравните ассемблер и Java/C#).

    А проверять всегда есть чего
    Представьте язык программирования, в котором можно описывать слова и оперировать ими. Определили мы конкретные существительные, глаголы, прилагательные (лексику) и составляем предложения из них. Но правила-то все-равно останутся: сказуемое (глагол) должно стоять после подлежащего (существительного), а определение (прилагательное) перед подлежащим, в предложении обязательно должно сказуемое ну и т.д. Проверяйте на здоровье. Вот
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[17]: Оффтопик
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 20:43
    Оценка: +1
    Здравствуйте, Геннадий Васильев, Вы писали:

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


    ГВ>>>Знаешь, порой много экономичнее вместо долгого разбора по кусочкам, многокилобайтного вычисления ошибок и их разбора, вычленения неправомерных обобщений и усилений... В общем, вместо анализа просто сказать: автор — ламер. Тем более, когда такие вещи видны не вооружённым глазом.


    FDS>>Варварство, бросание тухлых яиц...


    ГВ>Нет, просто обозначение вещей своими именами.


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

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


    ГВ>Не сочти за обиду, но видать, тебе мало приходилось объяснять другим их ошибки. Поверь, это крайне неблагодарное занятие. Тем более, когда ошибающийся даже слушать никого не хочет.


    Согласен. Самое плохое, что это ещё и скучно — вот это уже препятствие.

    ГВ>По моим наблюдениям, в среднем для того, чтобы разобрать ошибки, которые отдельные деятели могут уместить в небольшом абзаце, нужно потратить примерно раза в три больше букв и раз в десять больше времени. Это может быть интересно, если такой разбор представляет определённую ценность для самого разбирающего. В ином случае... На этот счёт есть восточная поговорка, которая звучит примерно так (есть вариации): "Иной дурак за час столько наговорит, что мудрец и за сто лет не разобрать".


    Не обязательно разбирать всё.

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


    Поэтому лучше не совершать глупость и пусть нестрого, но показать, что действительно написана глупость. А то скажешь "глупость", а тебе потом втык сделают и сам дураком себя чувствовать будешь, когда объяснять, что ты ничего не понял
    Re[4]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 07.09.06 20:46
    Оценка:
    Здравствуйте, Beam, Вы писали:

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


    B>>>Может в этом и есть секрет таких языков как Lisp, Smalltalk, J, ... (продолжите список)? Ведь в них как раз и имеется минимальный синтаксис, который:

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


    B>Это позволит повышать уровень абстракции, а это приведет к снижению количества логических ошибок. Причем к уменьшению на порядки по сравнению с тем количеством, которые сможет выявить компилятор на предыдущем уровне абстракции (сравните ассемблер и Java/C#).


    Да, но как уровень абстракции связан с лексической минимальностью?

    B>А проверять всегда есть чего

    B>Представьте язык программирования, в котором можно описывать слова и оперировать ими. Определили мы конкретные существительные, глаголы, прилагательные (лексику) и составляем предложения из них. Но правила-то все-равно останутся: сказуемое (глагол) должно стоять после подлежащего (существительного), а определение (прилагательное) перед подлежащим, в предложении обязательно должно сказуемое ну и т.д. Проверяйте на здоровье. Вот

    Это немного не то. Сдесь синтаксис и больше ничего. Никакой связи с семантикой.
    Re[32]: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 07.09.06 21:09
    Оценка: 10 (1)
    Здравствуйте, FDSC, Вы писали:

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


    FDS>>>ГДЕ ОНИ. Я уже раза три просил сказать правила, в которых используются нелокальные возвраты.


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


    FDS>Не когда это используется, а какие ограничения в использовании. Вы же сами привели пример с транзакцией. Какие правила позволяют исключить такую ошибку? Проще говоря, при небезопасной возможности языка должно быть очевидное правило, которое позволяет его безопасно использовать. Судя по высказываниям любителей SmallTalk, это правило существует. Вот я и хочу знать, какое оно?


    Интересный вопрос. И на него трудно ответить, т.к., как уже говорилось, такие проблемы обычно не возникают
    В случае частого возникновения такой проблемы я бы стремился:
    1. Создавать методы, не имеющие побочных эффектов (не считаем побочным эффектом выполнение блока). Вообще-то это правило стоит применять постоянно, т.е. не только для ухода от проблемы (ФП, однако)
    2. Вычислять блоки, передаваемые в качестве параметров, в самом конце работы метода, когда работа уже выполнена
    3. Или наоборот вычислять блоки в самом начале, т.е. до использования ресурсов или изменения внутренних переменных класса

    Ну и повторюсь. Передача блока с возвратом в качестве параметра в метод, который не ожидает такого возврата, является логической ошибкой. С таким же успехом и в другом языке можно передать в метод неправильные параметры и нарушить работу системы.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[18]: Оффтопик
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 07.09.06 21:30
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    ГВ>>>>Знаешь, порой много экономичнее вместо долгого разбора по кусочкам, многокилобайтного вычисления ошибок и их разбора, вычленения неправомерных обобщений и усилений... В общем, вместо анализа просто сказать: автор — ламер. Тем более, когда такие вещи видны не вооружённым глазом.

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

    Ну, в контексте упомянутого обсуждения статьи о greatest software вполне подходили обвинения в ламеризме. В общем, поверхностность наблюдений зачастую заметна и без глубокого разбора, определяющего причины такого впечатления. То же самое можно было сказать и о WTGSEW.

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

    ГВ>>Не сочти за обиду, но видать, тебе мало приходилось объяснять другим их ошибки. Поверь, это крайне неблагодарное занятие. Тем более, когда ошибающийся даже слушать никого не хочет.
    FDS>Согласен. Самое плохое, что это ещё и скучно — вот это уже препятствие.

    +1 Тем более, когда знаешь, что всё равно персонально оппоненту ни шиша не докажешь.

    ГВ>>По моим наблюдениям, в среднем для того, чтобы разобрать ошибки, которые отдельные деятели могут уместить в небольшом абзаце, нужно потратить примерно раза в три больше букв и раз в десять больше времени. Это может быть интересно, если такой разбор представляет определённую ценность для самого разбирающего. В ином случае... На этот счёт есть восточная поговорка, которая звучит примерно так (есть вариации): "Иной дурак за час столько наговорит, что мудрец и за сто лет не разобрать".


    FDS>Не обязательно разбирать всё.


    А если не разобрать всё или наиболее значимые моменты, то посыплются обвинения, что, мол, "по сути я хотел сказать совсем не то", "ты вырвал высказывания из контекста" и на сколько фантазии хватит. Поэтому в идеале нужно сначала сформулировать (за автора!) то, что он хотел сказать, найти и описать ошибки в его изложении и только после этого что-то утверждать. Работёнка на самом деле — адская. Особенно, когда речь заходит о тонких моментах, вроде "создания впечатления" или апелляциях к примитивным стереотипам.

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


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


    +1 Только больно уж много хлама развелось и тянут его ведь, блин, со всех помоек интернета. Ладно, это я уж так, наболело.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[5]: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 07.09.06 21:32
    Оценка: 5 (1)
    Здравствуйте, FDSC, Вы писали:

    B>>Это позволит повышать уровень абстракции, а это приведет к снижению количества логических ошибок. Причем к уменьшению на порядки по сравнению с тем количеством, которые сможет выявить компилятор на предыдущем уровне абстракции (сравните ассемблер и Java/C#).


    FDS>Да, но как уровень абстракции связан с лексической минимальностью?


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

    С синтаксической — тоже. Синтаксис должен быть минимальным дабы не акцентировать на нем внимание при работе. А главное, он должен ненавязчиво позволять вводить новые абстракции.

    B>>А проверять всегда есть чего

    B>>Представьте язык программирования, в котором можно описывать слова и оперировать ими. Определили мы конкретные существительные, глаголы, прилагательные (лексику) и составляем предложения из них. Но правила-то все-равно останутся: сказуемое (глагол) должно стоять после подлежащего (существительного), а определение (прилагательное) перед подлежащим, в предложении обязательно должно сказуемое ну и т.д. Проверяйте на здоровье. Вот

    FDS>Это немного не то. Сдесь синтаксис и больше ничего. Никакой связи с семантикой.


    Ну как же... Ведь на этапе определения слов и закладывается в них определенный смысл. Сейчас программист классы, методы и функции разрабатывает, а потом будет слова новые придумывать и описывать их смысл.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[14]: Насколько важен синтаксис языка?
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 07.09.06 22:21
    Оценка: -1 :)
    Здравствуйте, VladD2, Вы писали:

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

    Гы-гы.
    System.Web.UI.BaseParser.aspCodeRegex
    System.Web.UI.BaseParser.aspExprRegex;
    System.Web.UI.BaseParser.commentRegex;
    System.Web.UI.BaseParser.databindExprRegex;
    System.Web.UI.BaseParser.directiveRegex;
    System.Web.UI.BaseParser.endtagRegex;
    System.Web.UI.BaseParser.gtRegex;
    System.Web.UI.BaseParser.includeRegex;
    System.Web.UI.BaseParser.ltRegex;
    System.Web.UI.BaseParser.runatServerRegex;
    System.Web.UI.BaseParser.serverTagsRegex;
    System.Web.UI.BaseParser.tagRegex;
    System.Web.UI.BaseParser.textRegex;
    
    System.Web.Util.Wildcard.backslashRegex;
    System.Web.Util.Wildcard.commaRegex;
    System.Web.Util.Wildcard.metaRegex;
    System.Web.Util.Wildcard.questRegex;
    System.Web.Util.Wildcard.slashRegex;
    System.Web.Util.Wildcard.starRegex;
    
    ...
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[22]: Насколько важен синтаксис языка?
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 07.09.06 22:21
    Оценка: 11 (3) +2 -1
    Здравствуйте, Дарней, Вы писали:
    Д>лучще приведи пример кода, где не жить не быть — но без нелокальных возвратов обойтись нельзя
    Да нет такого кода. Но смысл я понял.
    Там, где дотнету приходится делать два метода: FindFirst и Apply, смоллток обходится одним. Просто потому, что решение о том, продолжать итерацию или выйти "изо всего" принимается в "делегате".
    В более сложных случаях давайте вспомним, как мы делали поиск по дереву. Конечно же рекурсия; и конечно же надо было обязательно оборудовать ее проверкой на продолжение и сохранением найденного элемента...
    Если бы нелокальный возврат существовал бы в дотнете, это работало бы как-то так:
    public interface IRecursible<T>: IEnumerable<IRecursible<T>>;
    
    public static void ForEach<T>(T root, Action<T> action)
      where T: IRecursible<T>
    {
      action(root);
      foreach(T child in root)
          ForEach(child, action);
    }


    Это мы так один раз объявили служебный метод. Его можно применять чтобы, например, выводить все дерево:

    class MyItem: IRecursible<MyItem>
    {
      // тривиальная реализация интерфейса поскипана
        public string Name;
    }
    
    public static PrintAll(MyItem root)
    {
      ForEach(root, delegate(MyItem t) { Console.WriteLine(t.Name);});
    }

    Тривиально, не правда ли? А теперь давайте кого-нибудь найдем:

    public static MyItem FindFirstStartingWith(MyTtem root, string start)
    {
      ForEach(root, 
            delegate(MyItem t) 
            { 
                if (t.Name.StartsWith(start))
                    super return t;
            } 
        );
    }

    Здесь я применил "новый" оператор super return, чтобы намекнуть на нелокальный возврат (в отличие от обычного return, который все равно приведет к ошибке компиляции из-за несовпадения типа получившегося анонимого делегата с Action<MyItem>).
    На что стоит обратить внимание?
    1. Все очевидно. Если знать, что такое супер-ретён.
    2. Никакой нелокальности с точки зрения пользователя нет. Код — немногим хуже банального foreach.
    3. При этом все-таки возврат может случиться с произвольной глубины стека — ведь Apply вызывает себя рекурсивно...
    4. Мы обошлись без написания специального метода поиска в дереве, типа вот такого:

    public static bool FindFirst(T root, Predicate<T> condition, out T result)
      where T: IRecursible<T>
    {
      
      if(condition(root))
        {
          result = root;
            return true;
        }
        foreach(T child in root)
        {
          if (FindFirst(child, condition, out result))
                return true;
        }
        return false;
    }
    
    public static MyItem FindFirstStartingWith(MyItem root, string start)
    {
      MyItem result;
      if (FindFirst(root, delegate(MyItem t) { return t.Name.StartsWith(start);}, out result))
          return result
        else
            return null;
    }


    5. На самом деле в данном случае не нужен весь этот лишний мусор в виде FindFirst. И ForEach тоже не нужен. ForEach уже сделан. Им и надо пользоваться в таких случаях:
    public static IEnumerable<T> IterateThrough<T>(T root)
        where T: IRecursible<T>
    {
      yield return root;
        foreach(T child in root)
          foreach(T grandchild in IterateThrough(child))
              yield return grandchild;
    }
    
    public static void PrintAll(MyItem root)
    {
      foreach(MyItem item in IterateThrough(root))
          Console.WriteLine(item.Name);
    }
    public static MyItem FindFirstStartingWith(MyItem root, string start)
    {
      foreach(MyItem item in IterateThrough(root))
          if (item.Name.StartsWith(start)
                return item;
        return null;
    }
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[12]: Насколько важен синтаксис языка?
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 07.09.06 22:21
    Оценка: 69 (5) +4
    Здравствуйте, VladD2, Вы писали:
    VD>Ненадо переводить. return в С-подобных языках не анлогичен ^ в Смолтоке. Потому ты и начал им хвастаться. Вот только на поверку окалось, что его отличия — это то что опытные программисты так не любят в goto.
    Да нет Влад. Ты преувеличиваешь. Злоупотребить крышкой в смолтоке очень трудно:
    Опасность номер 1: для разработчиков библиотеки.
    У тебя есть некоторый код, который вызывает переданный тебе делегат. Этот делегат может оказаться с "миной". Ее эффект на твой код сравним с исключением: управление передается не на следующую инструкцию, а стреляет вверх по стеку. Со всеми finally, разумеется, хоть и безо всяких catch.
    В принципе, тебе и так надо писать код, который не приводит твои объекты в неконсистентное состояние от вылета исключения. Специально затачиваться на него не стоит — выше по стеку стоит соответствующий кэтч, который там написан с должным смыслом.
    Можно специально затачиваться на случай, когда тебе передали "крышку", которая хочет вернуться в такое место, которого в стеке уже нет. Это — уже вполне настоящее исключение, которое ты опять же можешь обработать, а можешь не обрабатывать, в зависимости от того, чего ты имел в виду.

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

    Причем в большинстве случаев такого не случится, потому как анонимные блоки редко когда вообще передаются наверх. Это уже хардкорный код типа комбинаторов предикатов, в реальных проектах нужный только в 1% случаев.
    А в 99% случаев семантика крышки ясна как божий день, и ни малейшего затруднения с пониманием, куда перейдет управление, у тебя не будет. А ведь только это и представляет проблему.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[15]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 08.09.06 00:11
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

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

    S>Гы-гы.
    S>
    S>System.Web.UI.BaseParser.aspCodeRegex
    ...
    S>System.Web.Util.Wildcard.backslashRegex;
    S>...
    S>


    internal class Wildcard
    ...
    public class BaseParser
    {
        ...
        internal static readonly Regex aspCodeRegex;
        internal static readonly Regex aspExprRegex;
        internal static readonly Regex commentRegex;
        internal static readonly Regex databindExprRegex;
        internal static readonly Regex directiveRegex;
        internal static readonly Regex endtagRegex;
        internal static readonly Regex gtRegex;
        internal static readonly Regex includeRegex;
        internal static readonly Regex ltRegex;
        internal static readonly Regex runatServerRegex;
        internal static readonly Regex serverTagsRegex;
        internal static readonly Regex tagRegex;
        internal static readonly Regex textRegex;
    }


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

    FDS>Я его тут скомпилировал. Прикол в том, что он у меня не работает: выдаёт exception. То ли у меня руки кривые и я его неправильно скомпилил, то ли не знаю что


    Приведи текст исключения.

    FDS>Хм, на самом деле, было бы неплохо, если бы это описывалось в документации. Первое, что мне в голову пришло — это именно анализ дерева.


    В документации все не опишешь. Примеры там есть в общем-то. Но ёжику понятно, что на все вопросы не отвитешь. Так что проще задавать вопросы на форумах.

    FDS>Видать, я жуткий бюрократ . А в каком их форуме задавать?


    Пока что в Декларативно программировании.

    FDS>Спасибо (вы ответили сразу на три моих вопроса), но не вечно же у вас спрашивать,


    К сожалению, вечно действительно не получится. Хотя жаль.

    FDS>кода проблемы появляются , а со спецификацией я бы сам разобрался


    Думаешь у нас форум по донету лишний? На нем каждый день море вопросов. А ведь и по шарпу и по дотнету есть все спецификации.

    FDS>Когда мне надо сопоставлять с образцом, я запихиваю образцы в массив (вместе с указателями на функции) и в цикле проверяю.


    Ты просто плохо понимаешь о чем говоришь. Это надо прочувствовать.

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


    В Дельфи перед ними можно объявить только параметры внешних функций. В общем, это вещи не сравнимые.

    FDS>Ага, а если нет интергации с MS VS (1. не могу скачать последнюю версию непомню уже чего, 2. нефига не понимаю и т.п., в общем у меня не работает даже "простая" интеграция с VS, точнее работает, но на половину )


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

    FDS>О чём вы? Ведь правильно всё сказано, а исходное сообщение было явно провокационным


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

    VD>>Ой, а можно ссылку на эту цитату?


    ГВ>Запросто. Re[10]: ООП &mdash; перспективы
    Автор: IT
    Дата: 20.06.06


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

    FDS>VladD2 говорит 100% правильно — так всё и есть. Спроси у любого. Лучше скажи, как вы в SmallTalk избегаете ошибок, связанных с неструктурным переходом. Вот это будет интересно послушать.


    Как, как. Пишут небольшие приложения в одиночестве или пытаются не использовать подобные вещи (запрещать их). А возможно просто не видят проблем во все, а потом удивляются почему в очередной раз пришлось искать ошибку два часа.

    В свое время когда мы писали на плюсах был четкий кодекс правильного поведения в который входили такие как не очищать ресрусты кроме как в конструкторах оберток. Не возиться с куказетеляи без оберток. Не использовать goto. И таких "не" было море. В принципе, привыкаешь и проблемы вроде как не лезут изо всех щелей. Вот только на контроль этих "не" уходит нехилая часть мога и времени.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[16]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 08.09.06 00:42
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>Покажи мне этого мифического кого-то.


    Да, наши два любимых смолтокера. Кто из них не помню, но это и не важно.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[15]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 08.09.06 01:15
    Оценка: +3
    Здравствуйте, VladD2, Вы писали:

    VD>>>Ой, а можно ссылку на эту цитату?

    ГВ>>Запросто. Re[10]: ООП &mdash; перспективы
    Автор: IT
    Дата: 20.06.06

    VD>Получи заслуженный минус за откровенную лож.

    В чём же эта ложь состоит?

    ИМХО, всё просто. По словам IT получается, что следование за большинством требует наличия "элементарной логики и здравого смысла" в большей степени, нежели следование за меньшинством. Если учесть, что эти самые "элементарная логика и здравый смысл" присущи умным людям, то можно предположить, что следующие за меньшинством менее умны, тем те, кто следует большинству. Ну и далее сводим к сказанному мной: "кто не следует майнстриму, у того нет ума". Если ты заметил, я не пытался дословно процитировать IT, я всего лишь метафорически обозначил тип такого высказывания. Возможны были и другие метафоры, но мне показалось важным выделить субъектную направленность, мол, те, кто следует большинству в большей степени нагружают свой "логический аппарат". А замена "большинства" на "майнстрим" смысла не меняет, ведь именно большинство составляет майнстрим, не правда ли? Ну или "майнстрим" может использоваться как синоним "большинства".

    Вот так, или примерно так.

    PS.: Дело, разумеется, не в минусе. А вот обвинение во лжи мне кажется безосновательным.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[4]: Кстати
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 08.09.06 02:54
    Оценка: :)
    Здравствуйте, FDSC, Вы писали:

    FDS>>>Он считается некорректным, потому что со сслыкой на опыт невозможно спорить по причине того, что опыт у всех разный.

    ГВ>>Не подсказывай.
    FDS>Просто надоело читать, как один задаёт вопрос, а другой на него не хочет отвечать

    Это ты погорячился, погорячился.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[13]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 08.09.06 02:56
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    V>У того, о чем речь


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

    V>ставлю на то, что в личной беседе ты бы не рискнул вставить этот и ему подобные обороты


    ты так думаешь?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[13]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 08.09.06 02:56
    Оценка: :)
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Может, хватит мусорить?


    действительно, хороший совет. Начни с себя.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[26]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 08.09.06 03:06
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS>При этом подразумевается, что только у "плохих" есть предприимчивость


    почему?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[20]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 08.09.06 03:06
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>Плохие программисты могут быть неплохими бизнесменами, я как минимум пару таких знаю.


    вероятно, они одновременно могут быть также плохими каменщиками, авторемонтниками или гинекологами.
    Но я не думаю, что нужно перечислять все области, в которых у человека нет талантов.
    Хороший бизнесмен — этого уже вполне достаточно.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[18]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 08.09.06 03:06
    Оценка: -1
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Заблуждение. Если бы хоть 6% программистов (60% от всех Хороших Програмистов ) поднимали свои стартапы, то был бы тайфун стартапов.


    у тебя крайне завышенные оценки количества Хороших Программистов (не путать с теми, которые с маленькой буквы)

    ГВ>Угу. Типа стартап — это писать то, что тебе в кайф, а деньги сами в карман сыплются.


    ага. если ты действительно умеешь делать свое дело, то это так и есть.
    Ну а если не умеешь... это уже отдельный вопрос.

    ГВ>Заблуждение.


    правда?

    ГВ>Заблуждение. Гламурное к тому же.


    а давай без подонковской лексики?

    ГВ>Ага, а параллельно для хорошего програмиста не составит никаких проблем выполнять функции бухгалтера, директора, администратора и т.п.


    когда (если) в этом возникнет необходимость, деньги на бухгалтерию, администрацию и так далее уже будут
    само по себе производство продукта — оно, знаешь ли, появилось задолго до всех этих замечательных изобретений
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[3]: Дополнение
    От: Дарней Россия  
    Дата: 08.09.06 03:07
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Если ты заметил, то слово "учёный" я в кавычки не брал.


    Проблема в том, что ученых намного меньше, чем "ученых". Возможно, даже на порядки. И бОльшая часть тех, кто называет себя учеными, относится на самом деле совсем к другой категории.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[28]: Насколько важен синтаксис языка?
    От: Lazy Cjow Rhrr Россия lj://_lcr_
    Дата: 08.09.06 03:49
    Оценка: +4 :)
    VladD2,

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


    E>>Собственно, так и есть.


    VD>Кто бы спорил. Ты один из них и есть.


    Опять плавный переезд на личность
    quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
    Re[17]: Насколько важен синтаксис языка?
    От: Lazy Cjow Rhrr Россия lj://_lcr_
    Дата: 08.09.06 04:13
    Оценка: :)
    VladD2,

    LCR>>Ммм.. Нет, конечно. Но и твоя, и моя оценка субъективна.


    VD>Серьезно? Когда тебя называт ламером и недоумком, то это не нравится просто от того, что твоя оценка субъективна?


    Да. "Ударили по щеке, подставь другую", "Возлюби врага своего" и т.п. — в общем-то это не пустые слова, и нужно обладать определённой внутренней силой, чтобы поступить правильно и нивелировать агрессию оппонента. Раздуть конфликт может и дурак.

    Увы, этот разговор всё равно мало чего изменит. Потому не хочу на него тратить ни моё, ни твоё время. Извини.
    quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
    Re[4]: Дополнение
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 08.09.06 05:13
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    ГВ>>Если ты заметил, то слово "учёный" я в кавычки не брал.

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

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

    Понятно, что я ошибаюсь, ибо имеется бесконечное количество тем, связанных с этим
    Автор: Геннадий Васильев
    Дата: 06.09.06
    сообщением исключительно общей лексикой. Слова, то есть, похожи.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[19]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 08.09.06 05:13
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    ГВ>>Угу. Типа стартап — это писать то, что тебе в кайф, а деньги сами в карман сыплются.

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

    В отдельных случаях, возможно, так оно и есть.

    Д>>>Да, хороших программистов мало. Но у плохих всё равно нет никаких шансов поднять свой стартап, поэтому их не стоит вообще принимать в рассмотрение.

    ГВ>>Заблуждение.
    Д>правда?

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

    ГВ>>Заблуждение. Гламурное к тому же.

    Д>а давай без подонковской лексики?

    Где ты её нашёл?
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[20]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 08.09.06 05:33
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

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


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

    ГВ>>>Заблуждение. Гламурное к тому же.

    Д>>а давай без подонковской лексики?

    ГВ> Где ты её нашёл?


    а к чему ты вообще вставил здесь это слово? По смыслу оно совершенно неуместно.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[5]: Дополнение
    От: Дарней Россия  
    Дата: 08.09.06 05:36
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

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


    ГВ>Понятно, что я ошибаюсь, ибо имеется бесконечное количество тем, связанных с этим
    Автор: Геннадий Васильев
    Дата: 06.09.06
    сообщением исключительно общей лексикой. Слова, то есть, похожи.


    ты конечно прав. А не припомнишь, какое отношение противостояние "мышка vs ученый" имеет к теме обсуждения синтаксиса языков?
    Здесь я даже связи по общей лексике не наблюдаю.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[6]: Дополнение
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 08.09.06 06:07
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>А не припомнишь, какое отношение противостояние "мышка vs ученый" имеет к теме обсуждения синтаксиса языков?


    Ну просмотри ветку, начиная отсюда
    Автор: Win2k
    Дата: 04.09.06
    . Конкретно мышка с учёным связаны вот с этой фразой VladD2 отсюда
    Автор: VladD2
    Дата: 05.09.06
    :

    А что, прелесное дитя, с загнутыми в бабочау пальцами, ты сделал выдающегося в этой жизни?

    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[21]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 08.09.06 06:07
    Оценка:
    Здравствуйте, Дарней, Вы писали:

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

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

    Мы здесь о распространёности Lisp говорим, если я не ошибаюсь.

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


    А мне показалось, что ты излишне приукрашиваешь действительность. Отсюда и "гламур".
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[13]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 08.09.06 06:23
    Оценка:
    Здравствуйте, Sinclair

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


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[28]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 08.09.06 06:48
    Оценка: 1 (1) +2
    Здравствуйте, VladD2

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

    Тем не менее, было бы интересно послушать твое мнение о сути вопроса: почему схожие приемы в двух языках программирования не приводят к описываемым тобой проблемам? Может быть по причинам, которые хорошо были описаны Sinclair-ом?
    Автор: Sinclair
    Дата: 08.09.06


    Итак: интересно знать, почему ты утверждаешь, что использование return-ов из блоков кода -- это проблема, а на практике этой проблемы нет.




    Теперь о личном.

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


    E>>Собственно, так и есть.


    VD>Кто бы спорил. Ты один из них и есть.


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

    E>>Грабли видят (точнее, ощущают, те, кто на них наступают). Если смолторкеры говорят, что они программируют на SmallTalk и не натыкаются на эти грабли, а ты, не программируя на SmallTalk, говоришь, что видишь эти грабли...


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


    Обязательно буду. Для начала нужно только подождать, чтобы на Nemerle написали столько же кода, как на SmallTalk и в мире было столько же Nemerle-стов, сколько SmallTalk-еров. Думаю, лет пять-десять у нас в переди еще есть.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[16]: Насколько важен синтаксис языка?
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 08.09.06 07:13
    Оценка: :))
    Здравствуйте, VladD2, Вы писали:
    VD>[c#]
    VD>internal class Wildcard
    Я в курсе. У МС вообще в этом плане политика достаточно закрытая. Есть масса заинтерналенного кода, который был бы крайне полезен при написании приложений.

    VD>И что ты показать хотел? То что кто-то сделал внутри библиотеки поля с прекомпилирвоанными регексами?

    Что кто-то считает, что проще применять регекс как черный ящик.
    VD>Это как-то опровергает мои слова?
    Нет. А ты думаешь, что все тебя только и хотят опровергнуть?
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[21]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 08.09.06 07:31
    Оценка:
    Здравствуйте, Дарней, Вы писали:

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


    FR>>Плохие программисты могут быть неплохими бизнесменами, я как минимум пару таких знаю.


    Д>вероятно, они одновременно могут быть также плохими каменщиками, авторемонтниками или гинекологами.

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

    Это ты к чему? Мы же вроде про стартапы в IT? Тут в выигрыше как раз комбинация хоть какой то программист и одновременно хороший бизнесмен.
    Re[27]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 08.09.06 07:36
    Оценка:
    Здравствуйте, eao197, Вы писали:


    E>Блоки, созданные через Proc.new ведут себя так же, как блоки с ^ в SmallTalk (по крайней мере, насколько я понял из описаний смолтолкеров) -- применение в чужом контексте приведет к порождению исключения. Блоки, созданные через lambda, напротив, не прерывают работу вызвавшего их кода -- происходит возврат только из тела лямбды


    Вот это гораздо интересней ST (имхо, конечно )
    А можно вопрос — насколько часто применяется Proc.new? По сравнению с lambda? И есть ли вообще смысл в первом по ср. со вторым?
    Re[11]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 08.09.06 07:48
    Оценка: +1
    Здравствуйте, FDSC, Вы писали:

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


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


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


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


    FDS>Да, я сам пользовался AutoCAD, но какие преимущества даёт САМ ЛИСП, а не его лёгкость написания? Мы же говорим про программирование на ЛИСП, а не про его написание. С этим никто не спорит (хотя, что знает, кто знает)


    Ты не с той стороны смотришь, тебе как пользователю автокада глубоко пофигу на чём там что написано — лишь бы работало, а вот если бы ты был автором — было бы совсем иначе
    А в данном топике важнее как раз точка зрения программиста как автора.
    Re[33]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 08.09.06 08:01
    Оценка: +1
    Здравствуйте, Beam, Вы писали:

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


    Получается, что увеличивается связность компонентов, кроме просто определения метода, необходимо ещё для каждого блока знать, есть ли там возврат или нет, причём в определении этого метода это НЕ УКАЗАНО и нужно смотреть где этот блок создавался. Тут утверждают, что в ST методы маленькие, но толку от этого, если они обладают большей связностью? Хотя и больше гипотетической, конечно...
    Re[26]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 08.09.06 08:06
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    VD>>>Это возможно, но не элементарно.


    ANS>>В каком-то частном случае — возможно. В общем — нет.


    FDS>Приведите мне такой случай для языка со строгой статической типизацией.


    _Ты_ и Влад сказали, что это возможно вы и приводите.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[6]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 08.09.06 08:10
    Оценка: 6 (1)
    Здравствуйте, Beam, Вы писали:

    B>Ну как же... Ведь на этапе определения слов и закладывается в них определенный смысл. Сейчас программист классы, методы и функции разрабатывает, а потом будет слова новые придумывать и описывать их смысл.


    Язык с кучей слов давно есть называется forth
    Кстати и DSL'ы на нем есть где почти естественным языком проблемы описываются.
    Re[7]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 08.09.06 08:11
    Оценка:
    Здравствуйте, FR, Вы писали:

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


    B>>Ну как же... Ведь на этапе определения слов и закладывается в них определенный смысл. Сейчас программист классы, методы и функции разрабатывает, а потом будет слова новые придумывать и описывать их смысл.


    FR>Язык с кучей слов давно есть называется forth


    Лисп не катит в эту категорию, хочешь сказать?
    Re[22]: Насколько важен синтаксис языка?
    От: nostromo  
    Дата: 08.09.06 08:19
    Оценка:
    Здравствуйте, FDSC, Вы писали:

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


    N>>В Smalltalk тоже нельзя прервать выражение.

    N>>Например:
    N>>
    N>>SomeClass>>foo
    N>>|a b|
    N>>    a := self bar. "возвращает что-то типа [:x | ^x + 42]"
    N>>    b :=  a value. "сюда мы уже не попадем, потому что предыдущая строка вызовет исключение"
    N>>    ...
    N>>


    N>>При попытке вызова этого метода в любезно предложенном отладчике мы увидим следующее (VisualWorks):

    N>>
    N>>cannotReturn: value 
    N>>    "Raise a signal which means that the reciever attempted to return 
    
    [code]
    N>>    (with the supplied value), but its sender cannot be returned into 
    N>>    (e.g. sender is nil, probably because the receiver already returned). 
    N>>    This message is sent by the execution machinery (the VM or some
    N>>    execution simulator such as a debugger)."
    
    N>>    CannotReturnError new
    N>>        context: self;
    N>>        parameter: value;
    N>>        raise
    N>>


    FDS>Не дошло, почему исключение было вызвано? Можно прокомментировать подробнее?


    Исключение возникает при попытке выполнения оператора возврата внутри блока, помещенного в переменную a (в моих комментария выше есть ошибка, я исправился здесь
    Автор: FDSC
    Дата: 07.09.06
    ). Именно, приведенное выше сообщение cannotReturn: находится на вершине стека, а ниже лежит оператор возврата из блока. При этом в cannotReturn: в переменной self находится контекст метода bar, в котором sender=nil (это логично --- сообщение bar никто здесь не посылает), поэтому возврат из блока в данном случае вызывает исключение, а receiver --- собственно экземпляр класса SomeClass, которому послано сообщение foo.

    Ситуация меняется, если блок определен в том же методе в котором вызвается. Пример здесь
    Автор: FDSC
    Дата: 07.09.06
    .

    Еще несколько слов о блоках и контекстах. Контексты могут быть вложенными:

    y := 100.
    x := 200.
    block1 := [:x1 | [y+x1] ].
    (block1 value: 3) value.


    Последнее выражение вернет 103. Если вместо x1 написать x, то среда предупредит, что пременная x уже была определена вне блока, и, если оставить так, то при исполнении локальная переменная "закроет" доступ к внешней. Все равно вернется 103.

    Кроме того, контексты не копируются, а передаются по ссылке:

    x := 200.
    block1 := [x].
    block2 := [x := 3].
    block2 value.
    block1 value.


    Последнее выражение вернет 3. Впрочем, я не видел, чтобы кто-то так писал.
    Re[8]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 08.09.06 08:38
    Оценка:
    Здравствуйте, Курилка, Вы писали:


    FR>>Язык с кучей слов давно есть называется forth


    К>Лисп не катит в эту категорию, хочешь сказать?


    В лиспе главное скобки, в форте слова
    Лисп конечно катит, но на форте писать DSL близкие к естественному (правда сильно императивному) языку проще, вернее большинство программ написанных в хорошем стиле так и делают.
    Re[22]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 08.09.06 09:03
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>Это ты к чему? Мы же вроде про стартапы в IT? Тут в выигрыше как раз комбинация хоть какой то программист и одновременно хороший бизнесмен.


    это я к тому, что хорошего бизнесмена (менеджера) найти еще посложнее, чем хорошего программиста. Поэтому странновато называть хорошего бизнесмена плохим программистом
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[22]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 08.09.06 09:03
    Оценка: +1 :)
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Мы здесь о распространёности Lisp говорим, если я не ошибаюсь.


    Точнее — про то, что глупо объяснять малую распространенность языка тем, что кто-то его "не понял" или "не оценил"
    Кому надо — те и поймут, и оценят. Пример Грэхема здесь вполне показателен.

    ГВ>А мне показалось, что ты излишне приукрашиваешь действительность. Отсюда и "гламур".


    глупо
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[7]: Дополнение
    От: Дарней Россия  
    Дата: 08.09.06 09:03
    Оценка: :)
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Ну просмотри ветку, начиная отсюда
    Автор: Win2k
    Дата: 04.09.06
    . Конкретно мышка с учёным связаны вот с этой фразой VladD2 отсюда
    Автор: VladD2
    Дата: 05.09.06
    :


    ГВ>

    А что, прелесное дитя, с загнутыми в бабочау пальцами, ты сделал выдающегося в этой жизни?


    Ну так привел бы ссылки на свои проекты, список научных публикаций и так далее. Чтобы, так сказать, придать весомость своим словам. В чем проблема то?
    А вместо этого какие-то мутные аллегории про мышей, зерно и так далее. Не понимаю
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[28]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 08.09.06 10:01
    Оценка: 2 (1)
    Здравствуйте, Курилка, Вы писали:

    К>А можно вопрос — насколько часто применяется Proc.new? По сравнению с lambda? И есть ли вообще смысл в первом по ср. со вторым?


    Proc.new применяется гораздо чаще. Просто потому, что обычная передача блока кода:
    sample { return }

    приводит к конструированию объекта Proc через Proc.new:
    irb(main):001:0> def sample(&block)
    irb(main):002:1> block.call
    irb(main):003:1> end
    => nil
    irb(main):004:0> sample { return }
    LocalJumpError: unexpected return
            from (irb):4
            from (irb):2:in `sample'
            from (irb):4
    irb(main):005:0>


    Лямбда используется гораздо реже. Насколько я помню, я использую ее именно в случаях, когда нужно в одном месте определить блок кода, который будет использоваться в дальнейшем каким-то другим объектом:
    class Test
        def initialize( &blk )
            @blk = blk
        end
    
        def do_something
            @blk.call
        end
    end
    
    t = Test.new &lambda { puts "hello"; return }
    t.do_something

    Если в этом примере убрать &lambda, то при обращении к t.do_something произойдет LocalJumpError.
    Так же lambda применяется для формирования блоков, которые будут использоваться в другой нити.

    Но lambda все же встречается крайне редко. Есть, как минимум, два объяснения:

    1) return в блоках кода приходится использовать эпизодически. В основном используется тот факт, что значением блока является результат последней выполненой в блоке операции. Поэтому нет необходимости делать return. Если уж надобность в return-е возникла, значит в блоке выполняются какие-то слишком сложные действия и лучше вынести их в отдельный метод. Поэтому и получается, что основными потребителями блоков являются методы типа each и inject (у коллекций), open у File и т.п., где блоки имеют довольно тривиальный вид.

    2) когда блок кода используется для определения тела метода при помощи define_method (очень частый прием при метапрограммировании) нет разницы, через Proc.new или через lambda создается блок кода, поскольку он затем выполняется через instance_eval, а там чуть другие правила.

    Надобность же с return в Proc может возникнуть. Например, в примере, аналогичном показанному Beam-ом
    Автор: Beam
    Дата: 08.09.06
    . Но такие случаи используются в локальных контекстах и проблем не вызывают именно из-за локальности контекста.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[8]: Дополнение
    От: Gadsky Россия  
    Дата: 08.09.06 10:02
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    ГВ>>

    А что, прелесное дитя, с загнутыми в бабочау пальцами, ты сделал выдающегося в этой жизни?


    Д>Ну так привел бы ссылки на свои проекты, список научных публикаций и так далее. Чтобы, так сказать, придать весомость своим словам. В чем проблема то?

    Д>А вместо этого какие-то мутные аллегории про мышей, зерно и так далее. Не понимаю

    ИМХО, это был еще вежливый ответ на вопрос, заданный в хамском стиле...
    Re[18]: Оффтопик: Nemerle
    От: FDSC Россия consp11.github.io блог
    Дата: 08.09.06 10:09
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


    FDS>>Я его тут скомпилировал. Прикол в том, что он у меня не работает: выдаёт exception. То ли у меня руки кривые и я его неправильно скомпилил, то ли не знаю что


    VD>Приведи текст исключения.


    После тридцатого прочтения текста я, наконец, понял, что программе нужна сборка Nemerle.dll, а её нет в GAC. Тупею, тупею...
    Всё заработало, спасибо.


    FDS>>Хм, на самом деле, было бы неплохо, если бы это описывалось в документации. Первое, что мне в голову пришло — это именно анализ дерева.


    VD>В документации все не опишешь. Примеры там есть в общем-то. Но ёжику понятно, что на все вопросы не отвитешь. Так что проще задавать вопросы на форумах.


    Видать, у нас принципиально различные точки зрения. Для меня проще сделать вывод из документации, а если уж совсем плохо — тогда на форум. А в Nemerle практически только примеры и есть. Номальный файл описания очень помогает всё-таки, больше чем форум или разрозненная справка. (ну, не для спора сказано). Разве там есть описание обработки синтаксического дерева?


    FDS>>кода проблемы появляются , а со спецификацией я бы сам разобрался

    VD>Думаешь у нас форум по донету лишний? На нем каждый день море вопросов. А ведь и по шарпу и по дотнету есть все спецификации.

    Не видел ещё не одного вопроса по C#, на который нельзя было бы ответить после внимательного чтения спецификации (на это, правда, не все способны). Форумные вопросы в принципе должны возникать только от нестандартной реализации и багов (по крайней мере, что касается C#).

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


    VD>В Дельфи перед ними можно объявить только параметры внешних функций. В общем, это вещи не сравнимые.


    Не дошло. В Delphi можно так
    procedure proc1;
    var
      C1, C2: integer;
    
      procedure proc2;
      begin
        C1 := C2;
      end;
    ....

    Что можно сделать в Nemerle круче? В примерах там вроде всё то же Опять же, в каком документе это описано? Этот язык, наверное, в несколько раз круче, чем я о нём думаю, и всё только потому, что документация чёрт знает как оформлена. Эх, ну почему они не из Microsoft?!

    FDS>>Ага, а если нет интергации с MS VS (1. не могу скачать последнюю версию непомню уже чего, 2. нефига не понимаю и т.п., в общем у меня не работает даже "простая" интеграция с VS, точнее работает, но на половину )


    VD>А что не так?


    С вашей интеграцией не так, что нужна последняя версия VSIP SDK. Насколько я понимаю, по Dial-Up её не скачать.

    С "простой" интеграцией:
    Ну, например, переменная среды Nemerle содержала путь в одинарных кавычках, из-за чего все пути с ней были невалидны. После того, как я убрал кавычки по крайней мере стало возможным создавать проекты.

    Предупреждение:

    Warning 1 There is a circular reference involving the import of file "K:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets". This file may have been imported more than once, or you may have attempted to import the main project file. All except the first instance of this file will be ignored. K:\Program Files\Nemerle\Nemerle.MSBuild.targets 193 13 ClassLibrary1

    Тут до меня вообще мало что доходит
    Re[33]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 08.09.06 10:29
    Оценка:
    Здравствуйте, Beam, Вы писали:

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


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


    FDS>>>>ГДЕ ОНИ. Я уже раза три просил сказать правила, в которых используются нелокальные возвраты.


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


    FDS>>Не когда это используется, а какие ограничения в использовании. Вы же сами привели пример с транзакцией. Какие правила позволяют исключить такую ошибку? Проще говоря, при небезопасной возможности языка должно быть очевидное правило, которое позволяет его безопасно использовать. Судя по высказываниям любителей SmallTalk, это правило существует. Вот я и хочу знать, какое оно?


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

    B>В случае частого возникновения такой проблемы я бы стремился:
    B>1. Создавать методы, не имеющие побочных эффектов (не считаем побочным эффектом выполнение блока). Вообще-то это правило стоит применять постоянно, т.е. не только для ухода от проблемы (ФП, однако)
    B>2. Вычислять блоки, передаваемые в качестве параметров, в самом конце работы метода, когда работа уже выполнена
    B>3. Или наоборот вычислять блоки в самом начале, т.е. до использования ресурсов или изменения внутренних переменных класса

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


    Думаю, если эти проблемы обычно не возникают, то правила несколько иные. Видимо они слишком неформальны, что бы их описать.
    Re[27]: Статическое обнаружение ошибки передачи блока в retu
    От: FDSC Россия consp11.github.io блог
    Дата: 08.09.06 10:34
    Оценка: :)
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


    VD>>>>Это возможно, но не элементарно.


    ANS>>>В каком-то частном случае — возможно. В общем — нет.


    FDS>>Приведите мне такой случай для языка со строгой статической типизацией.


    ANS>_Ты_ и Влад сказали, что это возможно вы и приводите.


    Я должен приводить доказательство. А вы должны привести один единственный пример, подтверждающий, что вы правы. Согласитесь, это намного проще.

    Ну, доказать не доаказать, но логика проста. Если язык статически типизирован, то мы можем определить, что в некоторую переменную записывается значение некоторого блока, так как иначе нужно допустить, что мы не знаем, что мы записываем в переменную. А мы это должны знать так как:
    1. Язык статически типизирован и нельзя просто сослаться на некоторый участок памяти, который содержит неизвестный нам объект
    2. Сам блок описывается в этом же методе
    Ну, теорема доказана

    Рискну предположить, что в Microsoft для такой верификации инструменты были уже много лет.
    Re[28]: Статическое обнаружение ошибки передачи блока в retu
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 08.09.06 10:37
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS>Рискну предположить, что в Microsoft для такой верификации инструменты были уже много лет.


    А причём тут МС, собственно?
    Другим слабо?
    Re[23]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 08.09.06 10:49
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

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

    Д>>лучще приведи пример кода, где не жить не быть — но без нелокальных возвратов обойтись нельзя
    S>Да нет такого кода. Но смысл я понял.
    S>Там, где дотнету приходится делать два метода: FindFirst и Apply, смоллток обходится одним. Просто потому, что решение о том, продолжать итерацию или выйти "изо всего" принимается в "делегате".
    S>В более сложных случаях давайте вспомним, как мы делали поиск по дереву. Конечно же рекурсия; и конечно же надо было обязательно оборудовать ее проверкой на продолжение и сохранением найденного элемента...
    S>Если бы нелокальный возврат существовал бы в дотнете, это работало бы как-то так:
    S>
    S>public interface IRecursible<T>: IEnumerable<IRecursible<T>>;
    
    S>public static void ForEach<T>(T root, Action<T> action)
    S>  where T: IRecursible<T>
    S>{
    S>  action(root);
    S>  foreach(T child in root)
    S>      ForEach(child, action);
    S>}
    S>


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


    S>
    S>class MyItem: IRecursible<MyItem>
    S>{
    S>  // тривиальная реализация интерфейса поскипана
    S>    public string Name;
    S>}
    
    S>public static PrintAll(MyItem root)
    S>{
    S>  ForEach(root, delegate(MyItem t) { Console.WriteLine(t.Name);});
    S>}
    S>

    S>Тривиально, не правда ли? А теперь давайте кого-нибудь найдем:

    S>
    S>public static MyItem FindFirstStartingWith(MyTtem root, string start)
    S>{
    S>  ForEach(root, 
    S>        delegate(MyItem t) 
    S>        { 
    S>            if (t.Name.StartsWith(start))
    S>                super return t;
    S>        } 
    S>    );
    S>}
    S>

    S>Здесь я применил "новый" оператор super return, чтобы намекнуть на нелокальный возврат (в отличие от обычного return, который все равно приведет к ошибке компиляции из-за несовпадения типа получившегося анонимого делегата с Action<MyItem>).
    S>На что стоит обратить внимание?

    Банально

    public static void ForEach<T>(T root, Action<T> action)
    where T: IRecursible<T>
    {
    action(root);
    CRT Child = root.LoadFromDataBaseChildAndLock();
    foreach(T Child in root)
    {

    ForEach(Child, action);
    }
    Child.Unlock();
    }
    S>[/c#]

    и уже ошибка
    Re[23]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 08.09.06 10:52
    Оценка:
    Здравствуйте, nostromo, Вы писали:

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


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


    N>>>В Smalltalk тоже нельзя прервать выражение.

    N>>>Например:
    N>>>
    N>>>SomeClass>>foo
    N>>>|a b|
    N>>>    a := self bar. "возвращает что-то типа [:x | ^x + 42]"
    N>>>    b :=  a value. "сюда мы уже не попадем, потому что предыдущая строка вызовет исключение"
    N>>>    ...
    N>>>


    N>>>При попытке вызова этого метода в любезно предложенном отладчике мы увидим следующее (VisualWorks):

    N>>>
    N>>>cannotReturn: value 
    N>>>    "Raise a signal which means that the reciever attempted to return 
    
    N>[code]
    N>>>    (with the supplied value), but its sender cannot be returned into 
    N>>>    (e.g. sender is nil, probably because the receiver already returned). 
    N>>>    This message is sent by the execution machinery (the VM or some
    N>>>    execution simulator such as a debugger)."
    
    N>>>    CannotReturnError new
    N>>>        context: self;
    N>>>        parameter: value;
    N>>>        raise
    N>>>


    FDS>>Не дошло, почему исключение было вызвано? Можно прокомментировать подробнее?


    N>Исключение возникает при попытке выполнения оператора возврата внутри блока, помещенного в переменную a (в моих комментария выше есть ошибка, я исправился здесь
    Автор: FDSC
    Дата: 07.09.06
    ). Именно, приведенное выше сообщение cannotReturn: находится на вершине стека, а ниже лежит оператор возврата из блока. При этом в cannotReturn: в переменной self находится контекст метода bar, в котором sender=nil (это логично --- сообщение bar никто здесь не посылает), поэтому возврат из блока в данном случае вызывает исключение, а receiver --- собственно экземпляр класса SomeClass, которому послано сообщение foo.


    Насколько я понимаю, блок a был возвращён методом, в котором этот блок и объявлен. Но в таком случае спор не о том. Ведь мы можем не возвращать блок из метода, а использовать его в других вызываемых этим блоком методов. Надеюсь я вас правильно понял.
    Re[15]: Насколько важен синтаксис языка?
    От: fmiracle  
    Дата: 08.09.06 10:55
    Оценка: +1
    Здравствуйте, FDSC, Вы писали:

    FDS>Почему тогда эти супер успешные стартапы не на LISP?


    Ну вот уже упомянутый ранее Дарнеем Грэхем. Я не знаю — можно ли это назвать стартапом и насколько успешным — я почти не в теме, но, насколько я знаю, созданная им (на Лиспе) система позволила Амазону быстро и эффективно развернуться.

    Это раз.
    Я имел в виду — что можно быть и не супер-успешным (и совершенно неизвестным), но хорошо себя чувствовать, это два
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[14]: Насколько важен синтаксис языка?
    От: fmiracle  
    Дата: 08.09.06 10:55
    Оценка: 34 (3) +2
    Здравствуйте, Геннадий Васильев, Вы писали:

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


    Эээ. Ну нифига себе.
    Тут куда как чаще встретишь пренебрежительное отношение к тем, кто этими скучными (но нужными) задачами все же занимается, вместо того, чтобы достигать высот интеллекта программируя на, как это тут было сказано, "элитарных языках".

    Например:

    В мейнстриме, в основном, люди примитивные и ограниченные.


    Так что прямые оскорбления людей, занимающимся реальными, пусть и скучными, задачами ты считаешь нормальным (твой ответ на обсуждение сообщения с предыдущей цитатой):

    Я вот ничего оскорбительного в его словах не вижу

    А вот простое отсутствие поклонения перед приобщенными к высшим таинствам — это уже пренебрежение?

    Я чего-то не видел пока, чтобы кто-то вышел и прямомо сказал "Лисп — язык чисто для тунеядцев, нормальной работой заниматься они просто не хотят, вот и рисуют скобочки". Конечно, человека, заявляющего, что, например, "C# — исключительно для дебилов, ничего путного на нем сделать нельзя", люди, которые постоянно работают на C# — и которые видели удовольствие заказчиков от внедренных систем — попинают его непременно, и весьма жестко. Но ведь сам напросился, разве нет?


    F>>Каждой задаче — свое средство. Интересность/скучность задачи зависят от самой задачи, а никак не от используемого средства для ее решения.


    ГВ>Тоже верно. Но это не означает, что средства, используемые для "скучных" задач однозначно "лучше" и "качественнее" каких-то других.


    Для данной задачи? Должны быть лучше и качественне, по критериям, необходимым для выживания компании. "Лучше" и "качественнее" вообще, во всем, и всегда — так просто не бывает.
    Вроде я про то и сказал — каждой задаче свое средство — зачем опять пытаться внедрить "элитарный язык написания серебрянных пуль"?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[12]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 08.09.06 10:57
    Оценка:
    Здравствуйте, Курилка, Вы писали:

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


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


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


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


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


    FDS>>Да, я сам пользовался AutoCAD, но какие преимущества даёт САМ ЛИСП, а не его лёгкость написания? Мы же говорим про программирование на ЛИСП, а не про его написание. С этим никто не спорит (хотя, что знает, кто знает)


    К>Ты не с той стороны смотришь, тебе как пользователю автокада глубоко пофигу на чём там что написано — лишь бы работало, а вот если бы ты был автором — было бы совсем иначе


    Это вы не поняли: ведь AutoCAD не на лисп написан. Это скрипты для AutoCAD пишутся на ЛИСП и мне, как пользователю это не всё равно, потому что скриптовый язык я должен знать.

    К>А в данном топике важнее как раз точка зрения программиста как автора.


    Полностью согласен.
    Re[27]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 08.09.06 10:58
    Оценка:
    Здравствуйте, Дарней, Вы писали:

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


    FDS>>При этом подразумевается, что только у "плохих" есть предприимчивость


    Д>почему?


    Потому что такой пример. Хороший программист с предприимчивостью — это редкость.
    Re[13]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 08.09.06 11:02
    Оценка:
    Здравствуйте, FDSC, Вы писали:

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


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


    FDS>>>Да, я сам пользовался AutoCAD, но какие преимущества даёт САМ ЛИСП, а не его лёгкость написания? Мы же говорим про программирование на ЛИСП, а не про его написание. С этим никто не спорит (хотя, что знает, кто знает)


    К>>Ты не с той стороны смотришь, тебе как пользователю автокада глубоко пофигу на чём там что написано — лишь бы работало, а вот если бы ты был автором — было бы совсем иначе


    FDS>Это вы не поняли: ведь AutoCAD не на лисп написан. Это скрипты для AutoCAD пишутся на ЛИСП и мне, как пользователю это не всё равно, потому что скриптовый язык я должен знать.


    Вроде бы тут на рсдн на "вы" особо не принято
    И сколько пользователей видела автокада, хоть бы кто-нибудь на нём скрипты писал
    Но вот что кроме удобства написания (у тебя "лёгкости") ты пытаешься найти я так и понять не могу...
    Задача хорошего языка — легко и удобно выражать мысли программиста так, чтобы их понимал компьютер. Или у тебя есть какие-то другие идеи?
    Re[9]: Оффтопик о хамстве
    От: FDSC Россия consp11.github.io блог
    Дата: 08.09.06 11:04
    Оценка:
    Здравствуйте, Gadsky, Вы писали:

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


    ГВ>>>

    А что, прелесное дитя, с загнутыми в бабочау пальцами, ты сделал выдающегося в этой жизни?


    Д>>Ну так привел бы ссылки на свои проекты, список научных публикаций и так далее. Чтобы, так сказать, придать весомость своим словам. В чем проблема то?

    Д>>А вместо этого какие-то мутные аллегории про мышей, зерно и так далее. Не понимаю

    G>ИМХО, это был еще вежливый ответ на вопрос, заданный в хамском стиле...


    Нечего было "пальцы в бабочку" загибать. Так что...
    Re: Дополнение
    От: fmiracle  
    Дата: 08.09.06 11:07
    Оценка: 30 (1) +2 :)
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Маленькая мышка сожрать большой амбар зерна, то есть "сделает" очень много, но банальным грызуном с примитивной моделью существования она от этого быть не перестанет. Тогда как учёный может жизнь положить на безуспешные исследования, то есть "сделать" в смысле ощутимого результата очень мало, но, возможно, проложить этим дорогу другим.


    ГВ>Так что, при жизни к учёному нужно относиться пренебрежительнее, чем к грызуну?


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

    Этак я могу сказать, что ВАЗ-шестерка — легко разгоняется до 120км/ч, а вот Субару-Импреза — потребляет бензин.

    Таким образом шестерка — явно лучше, потому что она — ездит, а Субару-Импреза — плохая, потому что одни расходы на бензин.

    Еще можно сравнить экскаватор, который за день прогопает огромную траншею (и она останется!) и самолет, который слетает в Самару и обратно (таким образом — ничего не сделает — он как был утром в Москве, так и будет там же вечером). А экскаватор — гораздо лучше, его канава осталась!

    З.Ы.
    И эти люди запрещают мне ковыряться в носу! (с) Анекдот

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


    Некорректные сравнения — куда как более грязный прием
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[28]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 08.09.06 11:07
    Оценка:
    Здравствуйте, FDSC, Вы писали:

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


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


    FDS>>>При этом подразумевается, что только у "плохих" есть предприимчивость


    Д>>почему?


    FDS>Потому что такой пример. Хороший программист с предприимчивостью — это редкость.


    Совершенно согласен, просто воте если взять что хороших программистов 1%, и хороших предпринимателей 1% (цифры с потолка), то вероятность совпадения получается 0,01%, а плохого программиста и хорошего предпринимателя 0,99%.
    Хотя всё это не совсем корректные умозаключения (возможна корреляция и т.п.)
    Re[10]: Насколько важен синтаксис языка?
    От: ie Россия http://ziez.blogspot.com/
    Дата: 08.09.06 11:07
    Оценка: :))) :))) :))) :)))
    Здравствуйте, Vermicious Knid, Вы писали:

    VK>Есть как минимум еще один такой мега-язык, называется Inform 7. Это DSL для создание игр в жанре interactive fiction(типа Adventure, Zork, итд).


    Рассказал другу про этот язык, пишет:

    17:58:23: вот это я понимаю язык
    17:58:34: писал книгу а по ней игра сгенирилась
    17:59:01: а потом еще сделают плагинчик и она будет генерить фильм и сразу мультсериал

    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Превратим окружающую нас среду в воскресенье.
    Re[6]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 08.09.06 11:12
    Оценка:
    Здравствуйте, Beam, Вы писали:

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


    B>>>Это позволит повышать уровень абстракции, а это приведет к снижению количества логических ошибок. Причем к уменьшению на порядки по сравнению с тем количеством, которые сможет выявить компилятор на предыдущем уровне абстракции (сравните ассемблер и Java/C#).


    FDS>>Да, но как уровень абстракции связан с лексической минимальностью?


    B>С лексической минимальностью — связан. Представьте себе, что Вы хотите говорить на русском языке, а синтаксис языка программирования навязывает Вам слова английского, причем их нельзя изменить или убрать, а употреблять их нужно ну очень часто. Ну например, навязывает употреблять артикли перед каждым существительным. Ну зачем Вам в русском языке артикли?


    Я не говорю про неудачный синтаксис. Вы сами понимаете под лексической минимальностью минимальный набор стандартных конструкций языка (ключевых слов и операторов). Артикли здесь не при чём.

    B>С синтаксической — тоже. Синтаксис должен быть минимальным дабы не акцентировать на нем внимание при работе. А главное, он должен ненавязчиво позволять вводить новые абстракции.


    Да, но где же здесь связь с лексической минимальностью? Разве ввести в C# процедуру сложнее, чем в ЛИСП или в другом языке?
    int Func(int arg1, int arg2) {...} или (define (Func arg1 arg2) (...))

    Неудачный синтаксис и минимальность ключевых слов не одно и то же.

    B>>>А проверять всегда есть чего

    B>>>Представьте язык программирования, в котором можно описывать слова и оперировать ими. Определили мы конкретные существительные, глаголы, прилагательные (лексику) и составляем предложения из них. Но правила-то все-равно останутся: сказуемое (глагол) должно стоять после подлежащего (существительного), а определение (прилагательное) перед подлежащим, в предложении обязательно должно сказуемое ну и т.д. Проверяйте на здоровье. Вот

    FDS>>Это немного не то. Сдесь синтаксис и больше ничего. Никакой связи с семантикой.


    B>Ну как же... Ведь на этапе определения слов и закладывается в них определенный смысл. Сейчас программист классы, методы и функции разрабатывает, а потом будет слова новые придумывать и описывать их смысл.


    Класс — это уже новое слово, и процедура то же.
    Re[29]: Статическое обнаружение ошибки передачи блока в retu
    От: FDSC Россия consp11.github.io блог
    Дата: 08.09.06 11:21
    Оценка:
    Здравствуйте, Курилка, Вы писали:

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


    FDS>>Рискну предположить, что в Microsoft для такой верификации инструменты были уже много лет.


    К>А причём тут МС, собственно?

    К>Другим слабо?

    Это я пример привёл.
    Re[24]: Насколько важен синтаксис языка?
    От: nostromo  
    Дата: 08.09.06 11:23
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS>Насколько я понимаю, блок a был возвращён методом, в котором этот блок и объявлен.

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

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

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


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


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


    FDS>>>>Да, я сам пользовался AutoCAD, но какие преимущества даёт САМ ЛИСП, а не его лёгкость написания? Мы же говорим про программирование на ЛИСП, а не про его написание. С этим никто не спорит (хотя, что знает, кто знает)


    К>>>Ты не с той стороны смотришь, тебе как пользователю автокада глубоко пофигу на чём там что написано — лишь бы работало, а вот если бы ты был автором — было бы совсем иначе


    FDS>>Это вы не поняли: ведь AutoCAD не на лисп написан. Это скрипты для AutoCAD пишутся на ЛИСП и мне, как пользователю это не всё равно, потому что скриптовый язык я должен знать.


    К>Вроде бы тут на рсдн на "вы" особо не принято

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

    Мы писали, когда учили

    К>Но вот что кроме удобства написания (у тебя "лёгкости") ты пытаешься найти я так и понять не могу...


    Её и пытаюсь найти

    К>Задача хорошего языка — легко и удобно выражать мысли программиста так, чтобы их понимал компьютер. Или у тебя есть какие-то другие идеи?


    Именно такая задача и есть. Легко и удобно, для программиста, естественно
    Re[25]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 08.09.06 11:31
    Оценка:
    Здравствуйте, nostromo, Вы писали:

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


    FDS>>Насколько я понимаю, блок a был возвращён методом, в котором этот блок и объявлен.

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

    N>Не знаю, поняли ли Вы меня, но я Вас точно не понял. Если не сложно, сформулируйте вопрос иначе, или напишите пример.


    Вы говорите об ошибках, которые влечёт за собой возврат блока из функции


    Func1
    |block|
    block = [^x]
    
    Func2
    block.value "Генерирует исключение"


    Так или нет?

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

    Func1
    |block|
    block = [^x];
    Func3(block)
    далее
    Re[28]: Статическое обнаружение ошибки передачи блока в retu
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 08.09.06 11:33
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS>1. Язык статически типизирован и нельзя просто сослаться на некоторый участок памяти, который содержит неизвестный нам объект


    Тогда откуда берётся NullPointerException ?
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[17]: Насколько важен синтаксис языка?
    От: Klapaucius  
    Дата: 08.09.06 12:02
    Оценка: +6
    Здравствуйте, Геннадий Васильев, Вы писали:

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


    По моему скромному разумению, вера в НЕ ахинею никак не делает дурака умным и наоборот. Более правильным было бы считать дураком того, кто колеблется между псевдоаргументированной глупостью и бездоказательным комментарием к ней. И то и другое — на самом деле равнополезно с точки зрения аргументации. Короче говря, согласитесь, что бездоказательный комментарий — это никак не аргумент, разве что аргументация собственным авторитетом — тоесть опять таки не аргумент.
    В любом случае принимать что-то на веру (а не менять свою точку зрения под воздействием аргументов) не очень-то умно, и если что-то (не)принимается на веру под давлением авторитета Имярека — то умным это действие опять таки не становится.

    Я в данном случае никого не осуждаю, я согласен, что оставлять глупость непрокомментированной зачастую не хочется.
    Однако, я считаю, что было бы очень наивным считать, что делая это Вы уберегаете общество от роста популяции дураков.
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re[16]: Насколько важен синтаксис языка?
    От: Klapaucius  
    Дата: 08.09.06 12:02
    Оценка: +4 :))
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>ИМХО, всё просто. По словам IT получается, что следование за большинством требует наличия "элементарной логики и здравого смысла" в большей степени, нежели следование за меньшинством. Если учесть, что эти самые "элементарная логика и здравый смысл" присущи умным людям, то можно предположить, что следующие за меньшинством менее умны, тем те, кто следует большинству. Ну и далее сводим к сказанному мной: "кто не следует майнстриму, у того нет ума". Если ты заметил, я не пытался дословно процитировать IT, я всего лишь метафорически обозначил тип такого высказывания. Возможны были и другие метафоры, но мне показалось важным выделить субъектную направленность, мол, те, кто следует большинству в большей степени нагружают свой "логический аппарат". А замена "большинства" на "майнстрим" смысла не меняет, ведь именно большинство составляет майнстрим, не правда ли? Ну или "майнстрим" может использоваться как синоним "большинства".


    Mon ami, Вы как обычно много фантазируете. Эти Ваши рассуждения правомочны ровно в той же степени, что и нижеследующие:

    "Несогласие Геннадия Васильева с позицией IT означает, что Геннадий Васильев, считает, что следование за меньшинством как раз требует наличия элементарной логики и здравого смысла в наибольшей мере. Другими словами позиция ГВ выражается так: "Кто следует мэйнстриму — у того нет ума, кто следует меньшинству — безусловно элита". Разумеется, я не пытался дословно процитировать ГВ, я всего лишь метафорически обозначил тип такого высказывания. Возможны были и другие метафоры, но мне показалось важным выделить субъектную направленность, мол, те, кто следует меньшинству в большей степени нагружают свой "логический аппарат". А замена "меньшинства" на "элита" смысла не меняет, ведь именно меньшинство составляет элиту, не правда ли? Ну или "элита" может использоваться как синоним "меньшинства"."

    Если же не увлекаться фантазированием, а немного поразмыслить, можно прийти и к такому выводу, что для выбора группы, за которой нужно следовать по численности этой группы вообще не требуется ни логики, ни злравого смысла, потому что оценка по численности в данном случае бессмыслена и нелогична.
    И осуждение бездумного следования за меньшинством никак не является пропагандой бездумного следования за большинством. И наоборот.
    Это доступно?
    Численность группы не обязана коррелировать с правотой воззрений этой группы.
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re[29]: Статическое обнаружение ошибки передачи блока в retu
    От: FDSC Россия consp11.github.io блог
    Дата: 08.09.06 12:04
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


    FDS>>1. Язык статически типизирован и нельзя просто сослаться на некоторый участок памяти, который содержит неизвестный нам объект


    ANS>Тогда откуда берётся NullPointerException ?


    Он берётся из-за того, что объект определённого типа вообще не был создан.
    Re[26]: Насколько важен синтаксис языка?
    От: nostromo  
    Дата: 08.09.06 13:40
    Оценка:
    Здравствуйте, FDSC, Вы писали:


    FDS>Вы говорите об ошибках, которые влечёт за собой возврат блока из функции



    FDS>
    FDS>Func1
    FDS>|block|
    FDS>block = [^x]
    
    FDS>Func2
    FDS>block.value "Генерирует исключение"
    FDS>


    FDS>Так или нет?


    FDS>А мы говорим об ошибках логических, которые могут быть из-за того, что Func3 отработает не доконца из-за возврата из блока. Тут никаких исключений быть не должно


    FDS>
    FDS>Func1
    FDS>|block|
    FDS>block = [^x];
    FDS>Func3(block)
    FDS>далее
    FDS>


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

    N>На это я уже ответил здесь
    Автор: nostromo
    Дата: 07.09.06
    .


    Об этом мы говорим здесь
    Автор: FDSC
    Дата: 08.09.06
    . Если я вас правильно понял
    Re[34]: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 08.09.06 14:19
    Оценка:
    Здравствуйте, FDSC, Вы писали:

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


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


    Может их трудно описать потому что нет таких правил? И нет в них необходимости?
    На мой взгляд так оно и есть, а все дело в том, что данная проблема искусственно раздута. ИМХО.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[34]: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 08.09.06 14:19
    Оценка:
    Здравствуйте, Курилка, Вы писали:

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


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


    К>Получается, что увеличивается связность компонентов, кроме просто определения метода, необходимо ещё для каждого блока знать, есть ли там возврат или нет, причём в определении этого метода это НЕ УКАЗАНО и нужно смотреть где этот блок создавался. Тут утверждают, что в ST методы маленькие, но толку от этого, если они обладают большей связностью? Хотя и больше гипотетической, конечно...


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

    2. Блоки наоборот позволяют снизить связность компонентов
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[35]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 08.09.06 14:46
    Оценка:
    Здравствуйте, Beam, Вы писали:

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


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


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


    B>Может их трудно описать потому что нет таких правил? И нет в них необходимости?

    B>На мой взгляд так оно и есть, а все дело в том, что данная проблема искусственно раздута. ИМХО.

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

    Можно заключить, что SmallTalk для людей, мышление которых приспособлено для него
    Re[7]: Насколько важен синтаксис языка?
    От: Beam Россия  
    Дата: 08.09.06 14:48
    Оценка: :))) :)))
    Здравствуйте, FR, Вы писали:

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


    B>>Ну как же... Ведь на этапе определения слов и закладывается в них определенный смысл. Сейчас программист классы, методы и функции разрабатывает, а потом будет слова новые придумывать и описывать их смысл.


    FR>Язык с кучей слов давно есть называется forth

    FR>Кстати и DSL'ы на нем есть где почти естественным языком проблемы описываются.

    Да! По-моему это гениальный язык! Хотя я о нем только читал, меня он поразил.

    А еще мне кажется, что Forth — это Lisp наоборот Судите сами:
    (+ (* 10 3) (* 4 5))

    5 4 * 3 10 * +


    Ну разве не похоже?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[15]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 08.09.06 15:16
    Оценка: 2 (2) -1
    Здравствуйте, fmiracle, Вы писали:

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

    F>Эээ. Ну нифига себе.
    F>Тут куда как чаще встретишь пренебрежительное отношение к тем, кто этими скучными (но нужными) задачами все же занимается, вместо того, чтобы достигать высот интеллекта программируя на, как это тут было сказано, "элитарных языках".
    [...]
    F>А вот простое отсутствие поклонения перед приобщенными к высшим таинствам — это уже пренебрежение?

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

    F>Я чего-то не видел пока, чтобы кто-то вышел и прямомо сказал "Лисп — язык чисто для тунеядцев, нормальной работой заниматься они просто не хотят, вот и рисуют скобочки". Конечно, человека, заявляющего, что, например, "C# — исключительно для дебилов, ничего путного на нем сделать нельзя", люди, которые постоянно работают на C# — и которые видели удовольствие заказчиков от внедренных систем — попинают его непременно, и весьма жестко. Но ведь сам напросился, разве нет?


    А кто-то говорил, что на C# нельзя ничего путного сделать? Не передёргивай.

    F>>>Каждой задаче — свое средство. Интересность/скучность задачи зависят от самой задачи, а никак не от используемого средства для ее решения.

    ГВ>>Тоже верно. Но это не означает, что средства, используемые для "скучных" задач однозначно "лучше" и "качественнее" каких-то других.
    F>Для данной задачи? Должны быть лучше и качественне, по критериям, необходимым для выживания компании. "Лучше" и "качественнее" вообще, во всем, и всегда — так просто не бывает.

    Вот! Правильно. По критериям, необходимым для выживания компании. Наличие готовых недорогих специалистов — не самый малозначительный из них. Ergo, имеются серьёзные предпосылки выбора майнстрим-языка по критериям, не связанным с адекватностью этого языка задаче.

    F>Вроде я про то и сказал — каждой задаче свое средство — зачем опять пытаться внедрить "элитарный язык написания серебрянных пуль"?


    Вот-вот-вот. И ты, фактически, вторишь тем, кто говорит, что раз Lisp не в майнстриме, то его положительные стороны высосаны из пальца.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[8]: Дополнение
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 08.09.06 15:16
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    ГВ>>Ну просмотри ветку, начиная отсюда
    Автор: Win2k
    Дата: 04.09.06
    . Конкретно мышка с учёным связаны вот с этой фразой VladD2 отсюда
    Автор: VladD2
    Дата: 05.09.06
    :


    ГВ>>

    А что, прелесное дитя, с загнутыми в бабочау пальцами, ты сделал выдающегося в этой жизни?


    Д>Ну так привел бы ссылки на свои проекты, список научных публикаций и так далее. Чтобы, так сказать, придать весомость своим словам. В чем проблема то?


    Глупость это была бы несусветная.

    Д>А вместо этого какие-то мутные аллегории про мышей, зерно и так далее. Не понимаю


    Ты перечитай ветку, а то, сдаётся мне, что ты путаешь, кто к кому обращается и кто что почему сказал.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[2]: Дополнение
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 08.09.06 15:17
    Оценка: +3 -1
    Здравствуйте, fmiracle, Вы писали:

    F>Еще можно сравнить экскаватор, который за день прогопает огромную траншею (и она останется!) и самолет, который слетает в Самару и обратно (таким образом — ничего не сделает — он как был утром в Москве, так и будет там же вечером). А экскаватор — гораздо лучше, его канава осталась!


    Правильно. Пытаться определить ценность высказываний по количеству того, что человек ранее сделал — неверна by design. Тут много всего сразу примешивается: от апелляций к личности до аргументации опытом.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[17]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 08.09.06 15:17
    Оценка:
    Здравствуйте, Klapaucius, Вы писали:

    K>Mon ami, Вы как обычно много фантазируете. Эти Ваши рассуждения правомочны ровно в той же степени, что и нижеследующие:


    K>"Несогласие Геннадия Васильева с позицией IT означает, что Геннадий Васильев, считает, что следование за меньшинством как раз требует наличия элементарной логики и здравого смысла в наибольшей мере. Другими словами позиция ГВ выражается так: "Кто следует мэйнстриму — у того нет ума, кто следует меньшинству — безусловно элита".


    Тпр-р-ру, залётныя! Где это я говорил, что "меньшинство => элита" (хотя обратное верно)? Я говорил, что "большинство = майнстрим" и "инструментарий большинства != гуд для любых ситуаций".

    K>Разумеется, я не пытался дословно процитировать ГВ, я всего лишь метафорически обозначил тип такого высказывания.


    И перевернул с ног на голову базовую посылку? Оригинальная аналогия...

    K>Возможны были и другие метафоры, но мне показалось важным выделить субъектную направленность, мол, те, кто следует меньшинству в большей степени нагружают свой "логический аппарат".


    K>А замена "меньшинства" на "элита" смысла не меняет, ведь именно меньшинство составляет элиту, не правда ли? Ну или "элита" может использоваться как синоним "меньшинства"."


    Вот за это — двойка по логике, что я тут могу добавить?

    K>Если же не увлекаться фантазированием, а немного поразмыслить, можно прийти и к такому выводу, что для выбора группы, за которой нужно следовать по численности этой группы вообще не требуется ни логики, ни злравого смысла, потому что оценка по численности в данном случае бессмыслена и нелогична.


    О! Это уже теплее, респект.

    K>И осуждение бездумного следования за меньшинством никак не является пропагандой бездумного следования за большинством. И наоборот.

    K>Это доступно?

    Доступно. Но осуждение "бездумного следования вообще" не должно сопровождается указанием качеств какой-либо группы "за которой следуют". В данном случае
    Автор: IT
    Дата: 20.06.06
    , однако, группа была указана и коррекций не последовало.

    А следование за большинством и в самом деле особой работы мозга не требует: все побежали и я побежал, чего же проще-то?

    K>Численность группы не обязана коррелировать с правотой воззрений этой группы.


    +1 Совершенно верно.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[36]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 08.09.06 15:24
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    B>>Может их трудно описать потому что нет таких правил? И нет в них необходимости?

    B>>На мой взгляд так оно и есть, а все дело в том, что данная проблема искусственно раздута. ИМХО.

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


    FDS>Можно заключить, что SmallTalk для людей, мышление которых приспособлено для него


    Неправильное умозаключение. Эдак можно сказать, что и SQL для специфических людей. Просто есть определённые моменты, которые нужно учитывать, только и всего. Где-то рядом они были перечислены.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[16]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 08.09.06 15:32
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

    F>>>>Каждой задаче — свое средство. Интересность/скучность задачи зависят от самой задачи, а никак не от используемого средства для ее решения.

    ГВ>>>Тоже верно. Но это не означает, что средства, используемые для "скучных" задач однозначно "лучше" и "качественнее" каких-то других.
    F>>Для данной задачи? Должны быть лучше и качественне, по критериям, необходимым для выживания компании. "Лучше" и "качественнее" вообще, во всем, и всегда — так просто не бывает.

    ГВ>Вот! Правильно. По критериям, необходимым для выживания компании. Наличие готовых недорогих специалистов — не самый малозначительный из них. Ergo, имеются серьёзные предпосылки выбора майнстрим-языка по критериям, не связанным с адекватностью этого языка задаче.


    А почему "дорогие" специалисты не могут объединиться и сделать стартап?
    Re[17]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 08.09.06 15:52
    Оценка: 1 (1) +3
    Здравствуйте, FDSC, Вы писали:

    FDS>А почему "дорогие" специалисты не могут объединиться и сделать стартап?


    Могут, почему не могут. Я подозреваю, что просто не все этого хотят. Риск, хлопоты и так далее. А дорогие специалисты на то и дорогие специалисты, что их и так неплохо кормят.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[37]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 08.09.06 16:05
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

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


    B>>>Может их трудно описать потому что нет таких правил? И нет в них необходимости?

    B>>>На мой взгляд так оно и есть, а все дело в том, что данная проблема искусственно раздута. ИМХО.

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


    FDS>>Можно заключить, что SmallTalk для людей, мышление которых приспособлено для него


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


    Просто не все люди их учитывают, иначе бы такой спор не разгорелся бы
    Потому что...
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 08.09.06 16:19
    Оценка: +1 -1
    Здравствуйте, Дарней, Вы писали:

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

    Д>Не подскажешь, в чем тут секрет?

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

    Остаётся попробовать обозначить некорректный приём. Я всё же полагаю, что мои оппоненты вменяемые люди и адекватно отнесутся к указанию на ошибки. А поскольку ошибок пруд пруди, то такие "обвинения" появляются часто.

    Вот такие пирожки с котятами.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[14]: Насколько важен синтаксис языка?
    От: Gaperton http://gaperton.livejournal.com
    Дата: 08.09.06 16:25
    Оценка: 34 (2) +1 :))) :))) :)
    Здравствуйте, FDSC, Вы писали:

    FDS>Скорее всего "майнстрим" выбирает самые лучшие решения. Вопрос только в том, что считать самым лучшим


    О, да... Мэйнстрим... Мэйнстрим... Это, пнимаете, высокая философия наверно. А проще, я как все. Приятно знать, что я при этом самый умный и выбираю самое лучшее . Ну дык. Этож додуматься надо — делать как все. Не каждый, поди, сообразит, что надо как все. Это ж мозг нужон. Черт его знает, что мэйнстрим выбирает, короче. Но скорее всего самое лучшее, мэйнстрим-то не дурак.
    Re[4]: Насколько важен синтаксис языка?
    От: Gaperton http://gaperton.livejournal.com
    Дата: 08.09.06 16:38
    Оценка: -2 :)
    Здравствуйте, quadrochups, Вы писали:

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


    ANS>>В корне не верно! Читать нужно не "условие :ЕслиДа делать то-то", а ....



    Q>К сожалению, ваше мышление уже исковеркано — как вы можете мне объяснять как надо читать? Я, слава небу, русский, знаю немного английский и Си.


    Он может объяснить тебе, как надо читать, потому что он, слава богу, великолепно владеет обоими языками — владение Смоллтоком почему-то не мешает ему прекрасно понимать и использовать С. Умеет, поэтому и может. Вот ты — не умеешь, поэтому и не можешь. Что не так? У кого-то, к сожалению, мозги исковерканы?
    Re[17]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 08.09.06 16:55
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>Я в курсе. У МС вообще в этом плане политика достаточно закрытая. Есть масса заинтерналенного кода, который был бы крайне полезен при написании приложений.


    А с какой целью приводил?

    VD>>И что ты показать хотел? То что кто-то сделал внутри библиотеки поля с прекомпилирвоанными регексами?

    S>Что кто-то считает, что проще применять регекс как черный ящик.

    Кто?

    VD>>Это как-то опровергает мои слова?

    S>Нет. А ты думаешь, что все тебя только и хотят опровергнуть?

    Так какова цель твоего сообщения? Вы там гуляте что ли?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[17]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 08.09.06 17:40
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    ГВ>>Вот! Правильно. По критериям, необходимым для выживания компании. Наличие готовых недорогих специалистов — не самый малозначительный из них. Ergo, имеются серьёзные предпосылки выбора майнстрим-языка по критериям, не связанным с адекватностью этого языка задаче.


    FDS>А почему "дорогие" специалисты не могут объединиться и сделать стартап?


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

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


    ГВ>>>Вот! Правильно. По критериям, необходимым для выживания компании. Наличие готовых недорогих специалистов — не самый малозначительный из них. Ergo, имеются серьёзные предпосылки выбора майнстрим-языка по критериям, не связанным с адекватностью этого языка задаче.


    FDS>>А почему "дорогие" специалисты не могут объединиться и сделать стартап?


    FR>Ты поинтересуйся какой процент стартапов доживает хотя бы до окупаемости затраченных на них средств.


    Есть люди, которые занимаются только стартапами. Так что тут дело не в проценте
    Re[14]: Насколько важен синтаксис языка?
    От: vdimas Россия  
    Дата: 08.09.06 17:44
    Оценка: :)
    Здравствуйте, Дарней, Вы писали:


    V>>У того, о чем речь


    Д>о чем идет речь? Не забывай, что здесь много веток обсуждения.


    Re[9]: Насколько важен синтаксис языка?
    Автор: vdimas
    Дата: 07.09.06


    V>>ставлю на то, что в личной беседе ты бы не рискнул вставить этот и ему подобные обороты


    Д>ты так думаешь?


    Если тебе нравится хамить людям, то можно это сделать хотя бы приватом. Если же вопрос по существу, т.е. тебе важен ответ — то он таков: уверен. В любом случае без личной встречи качественно пободаться не получиться, а заочно у меня есть некие субъективные основания так предполагать.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[13]: Насколько важен синтаксис языка?
    От: vdimas Россия  
    Дата: 08.09.06 17:44
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    К>>Ты не с той стороны смотришь, тебе как пользователю автокада глубоко пофигу на чём там что написано — лишь бы работало, а вот если бы ты был автором — было бы совсем иначе


    FDS>Это вы не поняли: ведь AutoCAD не на лисп написан. Это скрипты для AutoCAD пишутся на ЛИСП и мне, как пользователю это не всё равно, потому что скриптовый язык я должен знать.


    У скриптового языка должна быть возможность легкой интеграции с высокооптимизированным бинарным кодом. Технология Лисп-машин это позволяет. Безглючное VBA (мощная альтернатива на том же поле) появилось только ближе к 5-й версии Internet Explorer.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[19]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 08.09.06 18:25
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS> После тридцатого прочтения текста я, наконец, понял, что программе нужна сборка Nemerle.dll, а её нет в GAC. Тупею, тупею...


    Вот и я о том же.

    Но в ГАК ее лучше не класть. Просто положи рядом с ехе-шником.


    FDS>Видать, у нас принципиально различные точки зрения. Для меня проще сделать вывод из документации, а если уж совсем плохо — тогда на форум.


    Так и есть. Но у тебя вопросы скорее позновательные.

    FDS> А в Nemerle практически только примеры и есть. Номальный файл описания очень помогает всё-таки, больше чем форум или разрозненная справка. (ну, не д ля спора сказано). Разве там есть описание обработки синтаксического дерева?


    Кое что есть. Но в полном объеме конечно такой документации вообще ни для какого языка не найдешь. Слава богу не обязательно знать все кишки компилятора, чтобы писать макросы можно исползовать квази-цитирование.

    FDS>Не видел ещё не одного вопроса по C#, на который нельзя было бы ответить после внимательного чтения спецификации (на это, правда, не все способны). Форумные вопросы в принципе должны возникать только от нестандартной реализации и багов (по крайней мере, что касается C#).


    Значит плохо смотрел. Я сам иногда нахожу интересные ответы хотя казалось бы многие спецификации дотнета знаю чуть ли на изусть.

    FDS>Не дошло. В Delphi можно так

    FDS>
    FDS>procedure proc1;
    FDS>var
    FDS>  C1, C2: integer;
    
    FDS>  procedure proc2;
    FDS>  begin
    FDS>    C1 := C2;
    FDS>  end;
    FDS>....
    FDS>

    FDS>Что можно сделать в Nemerle круче? В примерах там вроде всё то же

    У меня большое ощущение, что ты читал статью или по диагонали, или просто не вдумывался.
    Попробуй еще раз прочесть раздел: Локальные функции
    Автор(ы): Сергей Туленцев, Владислав Чистяков
    Дата: 23.05.2006
    Производительность труда программиста в основном зависит от самого программиста. Однако даже самый опытный и знающий программист мало что может без подходящего инструмента. Эта статья открывает цикл статей об одном из таких инструментов, еще мало известном среди программистов, но очень многообещающем. Язык Nemerle, о котором пойдет речь в этих статьях, на первый взгляд очень похож на слегка улучшенный C#, но привносит многое из передовых исследовательских языков. Данная статья рассказывает об отличиях Nemerle от C# (как наиболее близкого языка)и является неформальным введением в язык.
    и далее.

    У функций Немерла два основных отличий.
    1. Их функции являются полноценными лексическими замыканиями. Так что ты можешь использовать напрямую все переменные и функции объявленные выше данной. Например:
    usung System.Console;
    
    mutable x = 5;
    def add(a, b) { a + b }
    def addX(c) { add(c, x); }
    
    WriteLine(addX(2));


    2. Функции в Немерле являются значениями. Над ними можно совершать преобразования. В общем-то пример выше как раз это показал, но не очень явно. А вот как можно:
    usung System.Console;
    
    mutable x = 5;
    def add(a, b) { a + b }
    def addX = add(x, _);
    
    WriteLine(addX(2));


    FDS> Опять же, в каком документе это описано? Этот язык, наверное, в несколько раз круче, чем я о нём думаю, и всё только потому, что документация чёрт знает как оформлена. Эх, ну почему они не из Microsoft?!


    Статья сделана по их сайту. Там конечно есть не все, но очень многое. Да и в статье есть многое и в одном месте.

    FDS>С вашей интеграцией не так, что нужна последняя версия VSIP SDK. Насколько я понимаю, по Dial-Up её не скачать.


    Скоро все будет ОК. У нас уже есть так называемый PLK который позволит сделать инсталлятор. Но надо кое что доделать.

    FDS>С "простой" интеграцией:

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

    Да, есть такая проблема. Она уже исправлена, но в инсталляторе конечно все по старому.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[29]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 08.09.06 18:25
    Оценка: :)
    Здравствуйте, Lazy Cjow Rhrr, Вы писали:

    VD>>Кто бы спорил. Ты один из них и есть.


    LCR>Опять плавный переезд на личность


    Личность сама о себе заявила. Я как бы его за язык не тянул. Не называть же его поглонником Немерла?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[18]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 08.09.06 18:32
    Оценка: 11 (1)
    Здравствуйте, Klapaucius, Вы писали:

    K>Я в данном случае никого не осуждаю, я согласен, что оставлять глупость непрокомментированной зачастую не хочется.

    K>Однако, я считаю, что было бы очень наивным считать, что делая это Вы уберегаете общество от роста популяции дураков.

    "Делай что должно и будь, что будет." (c)
    << Под музыку: Blackmoore's Night — Minstrel Hall >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[24]: Насколько важен синтаксис языка?
    От: pavel74  
    Дата: 08.09.06 19:27
    Оценка:
    Здравствуйте, VladD2, Вы писали:


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


    Ну вот тогда и пример метода ( в двойных апострофах коменты)
    "есть ли хоть какой-то элемент в массиве чисел соответствующий хитрому условию"
    "если хоть один есть вернуть true иначе false"
    checkCondition
    | a | "объявил переменную"
    a:= self взятьОткудаТоМассив.   "в переменную a присвоили массив чисел (в общем случае тип массива неизвестен"
    " т.е. может оказаться массив, или LinkedList или еще что-то подобное, главное что у массива будет метод-итератор do: "
    
    "Делаем пробег по массиву, в блоке кода передаваемому методу do: в параметре each будут приходить "
    " элементы массива. "
    "Каждый элемент проверяем какой-то хитрой булевской функцией.  Как тока встретился первый подходящий "
    "итерацию по массиву заканчиваем и выходим из метода с результатом - true"
    a do: [ :each | ( each isBitSet: 3 ) еслиДа: [^true] ].
    "весь массив обошли, но подходящего элемента не встретили, вертаем - false"
    ^false



    тоже, но без коментов
    checkCondition
      |a|
      a := self взятьОткудаТоМассив.
      a do: [ :each | (each isBitSet: 3 ) еслиДа: [^true] ].
      ^false


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


    PS. Хотелось бы увидеть также аналог и на C#
    Re[24]: Насколько важен синтаксис языка?
    От: pavel74  
    Дата: 08.09.06 20:36
    Оценка:
    Здравствуйте, FDSC, Вы писали:


    FDS>Банально


    FDS>public static void ForEach<T>(T root, Action<T> action)

    FDS> where T: IRecursible<T>
    FDS>{
    FDS> action(root);
    FDS> CRT Child = root.LoadFromDataBaseChildAndLock();
    FDS> foreach(T Child in root)
    FDS>{

    FDS> ForEach(Child, action);

    FDS>}
    FDS>Child.Unlock();
    FDS>}
    S>>[/c#]

    FDS>и уже ошибка


    ну дак обложить обработкой ошибок, тем более если передан внешний блок кода, то существует вероятность что там может возникнуть эксепшн. А нелокальный возврат это фактически "особый" эксепшен.
    Re[17]: Насколько важен синтаксис языка?
    От: vdimas Россия  
    Дата: 08.09.06 21:14
    Оценка: 46 (4) +1 :)
    Здравствуйте, Klapaucius, Вы писали:


    K>И осуждение бездумного следования за меньшинством никак не является пропагандой бездумного следования за большинством. И наоборот.

    K>Это доступно?

    Является, к сожалению. У характеристики "меньшинство/большинство" всего 2 значения.

    K>Численность группы не обязана коррелировать с правотой воззрений этой группы.


    Хоть и верно но вообще не в тему. В том смысле что не доказывает и не опровергает ни чьей стороны, нейтральное громкое высказывание.


    --------
    А вообще, мейнстрим не зря все время ругают. Мейнстрим — это средний и мелкий бизнес. Это потребность получить максимум отдачи при минимум вложениях. "Минимум вложения" — это ключевое слово, это как таковое условие существования мелкого бизнеса, и оно все объясняет. Менеджеры набирают минимально грамотный личный состав, достаточный для выполнения какого-либо проекта (уже акцентировал внимание на этом) ввиду экономии на ЗП. Давным-давно никто не пытается набрать самых лучших и сделать что-либо действительно хорошее. Сегодня рулят решения по-месту, и блин, это при том, что классов задач до смешного мало. Такое распыление сил, такая непроизводительная потеря человекочасов программистким сообществом на изготовление сотен тысяч одинаковых по-сути софтин (и одинаково слабых, разумеется, при таком распылении усилий). В общем, такой подход, ИМХО, тормозит развитие выч.области как таковой. Взять буквально еще 15-20 лет назад, программистов было на 2 порядка меньше, но они умудрялись двигать IT ничуть не медленнее чем сейчас (если не быстрее). И окупаемость была гораздо выше. Почти все очень грамотные IT-люди того времени сейчас весьма состоятельные люди. А сегодня грамотные IT-люди чуствуют себя лишними на этом празднике жизни. Ибо сегодня творцу не надо уметь готовить невообразимые уникальные блюда для честного и большого заработка. Напротив, необходимо демонстрировать умение быстрее всех чистить картошку. Если будут оставаться силы и время, то по ночам еще можно мастерить автомат для чистки картошки, но опять же, блин, не особо разгуляешься, ибо платят только за картошку, и чистить ее надо очень много, чтобы содержать себя и семью. Так и лежат у каждого в сарае недоделанные близкие сердцу картофелерезки. А через очередные 5 лет полностью меняется формат картошки, она теперь квадратная, требует еще меньше уникальных навыков даже для этого нехитрого действа по ее очистке. Но спроектированный автомат уже явно не стольо эффективен для квадратных картошек. Для них, квадратных, автомат можно построить на совсем других принципах. Засада, как всегда, приходит не с той стороны.

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

    Ответ в том, что никому нахрен не нужно двигать никакую инженерную мысль, а надо двигать собственный бизнес, и ничего кроме него. Отсюда имеем наложение кучи левых требований к софту и уменьшение приоритета действительно интересных и нужных (с т.з. полезности для сообщества) требований и фич. Действительно интересный и известный здесь (благодяря Владу) проект Nemerle вырос из чистых академических интересов, и положительный результат на лице, как говорится. Жаль, что выбор платформ для реализации тех идей не велик сейчас, и к тому же все две сидят поверх байт-кода (что совершенно не является необходимым для идей Nemerle). Почему-то есть твердая уверенность, что Nemerle никогда не станет мейнстримом, ибо он не отвечает требованию: "дешевый личный состав". В лучшем случае станет мощным инструментом для профессионалов и то, не ранее, чем обрастет вменяемым и неглючным окружением для разработки (не камень ни в чей огород, просто озвучка "мнения зала").
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[15]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 08.09.06 23:47
    Оценка: :)
    Здравствуйте, Gaperton, Вы писали:

    FDS>>Скорее всего "майнстрим" выбирает самые лучшие решения. Вопрос только в том, что считать самым лучшим


    G>О, да... Мэйнстрим... Мэйнстрим... Это, пнимаете, высокая философия наверно. А проще, я как все. Приятно знать, что я при этом самый умный и выбираю самое лучшее . Ну дык. Этож додуматься надо — делать как все. Не каждый, поди, сообразит, что надо как все. Это ж мозг нужон. Черт его знает, что мэйнстрим выбирает, короче. Но скорее всего самое лучшее, мэйнстрим-то не дурак.


    Молодец, соображаешь! Когда хочешь...
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re: Потому что...
    От: IT Россия linq2db.com
    Дата: 08.09.06 23:57
    Оценка: +1 :))) :)
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Подскажу. Потому что мои оппоненты часто занимаются демагогией.


    Ты думаешь, обвинив других в демагогии, можно полностью реабилитироваться?
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[14]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 09.09.06 00:07
    Оценка: 1 (1) +3
    Здравствуйте, Курилка, Вы писали:

    К>Задача хорошего языка — легко и удобно выражать мысли программиста так, чтобы их понимал компьютер. Или у тебя есть какие-то другие идеи?


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

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

    V>У скриптового языка должна быть возможность легкой интеграции с высокооптимизированным бинарным кодом. Технология Лисп-машин это позволяет. Безглючное VBA (мощная альтернатива на том же поле) появилось только ближе к 5-й версии Internet Explorer.


    Ради спроведливости... VBA это Офис... Ворд, Эксель... но никак не Internet Explorer.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[3]: Дополнение
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 09.09.06 00:07
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Правильно. Пытаться определить ценность высказываний по количеству того, что человек ранее сделал — неверна by design. Тут много всего сразу примешивается: от апелляций к личности до аргументации опытом.


    Ген, ты бы хоть что-то по какму-нибудь делу сказал. Твои упражнения в софистики уже приелись.

    Это говно тебя же и оскорбляло, а ты его защищаешь только чтобы с кем-то поспорить. Ты просто подумай о маразме ситуации!

    Мы тут с IT во всю колбасим на языке котрый Lisp за предка считает и пытаемся оградить общество от хмаов, а ты оправдываешь былдогея который тебя же (мэйнстрим-С++-программиста) с дерьмом сравнивает. Тебе не странно?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[27]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 09.09.06 00:14
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    FDS>>Приведите мне такой случай для языка со строгой статической типизацией.


    ANS>_Ты_ и Влад сказали, что это возможно вы и приводите.


    Привожу случаи%: 1, 2342, 2, 1234, 4, далее с частотой 1/2.

    Опровергай...
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[29]: Статическое обнаружение ошибки передачи блока в retu
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 09.09.06 00:14
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


    FDS>>1. Язык статически типизирован и нельзя просто сослаться на некоторый участок памяти, который содержит неизвестный нам объект


    ANS>Тогда откуда берётся NullPointerException ?


    Не контролируется пока. Но тут просая математика. Чем меньше контрль, тем больше проблем. В Spec# и Nemerle NullPointerException уже потихоньку конролируются. Глядишь дальше будут и в других местах котролироваться. В ML воообще без null решили жить.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[18]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 09.09.06 00:35
    Оценка: +3 -1
    Здравствуйте, vdimas, Вы писали:

    V>А вообще, мейнстрим не зря все время ругают. Мейнстрим — это средний и мелкий бизнес.


    В IT весь бизнес мелкий, даже в крупных компаниях. Небольшие команды, каждая со своими правилами и стандартами.

    V>Это потребность получить максимум отдачи при минимум вложениях. "Минимум вложения" — это ключевое слово, это как таковое условие существования мелкого бизнеса, и оно все объясняет.


    Нет такой потребности. У менеджера есть потребность выполнить задание. Если это задание — "минимум вложения", то это становится потребностью.

    V>Менеджеры набирают минимально грамотный личный состав, достаточный для выполнения какого-либо проекта (уже акцентировал внимание на этом) ввиду экономии на ЗП. Давным-давно никто не пытается набрать самых лучших и сделать что-либо действительно хорошее.


    Тебе просто не повезло, не обобщай и по скорее меняй работу.

    V>Сегодня рулят решения по-месту, и блин, это при том, что классов задач до смешного мало. Такое распыление сил, такая непроизводительная потеря человекочасов программистким сообществом на изготовление сотен тысяч одинаковых по-сути софтин (и одинаково слабых, разумеется, при таком распылении усилий). В общем, такой подход, ИМХО, тормозит развитие выч.области как таковой.


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

    V>Взять буквально еще 15-20 лет назад, программистов было на 2 порядка меньше, но они умудрялись двигать IT ничуть не медленнее чем сейчас (если не быстрее).


    20 лет назад большая часть программистов в нерушимой занималась расчётом зарплаты на ЕС ЭВМ. Чуть меньшая часть протирала штаны в НИИ. Оставшаяся на той же ЭВМ рассчитывала траектории баллистических ракет. IT никто ни куда не двигал, по крайней мере в необъятной.

    V>И окупаемость была гораздо выше.


    Знаешь сколько стоил в те времена один компьютер. А сколько была зарплата программиста? Хочешь обратно?

    V>Почти все очень грамотные IT-люди того времени сейчас весьма состоятельные люди.


    Грамотные IT-люди того времени сидят и заполняют таможенные декларации, т.к в своё время им не хватило сил на переход с ЕС ЭВМ на писюки. Правда, другие, чуть менее грамотные, но более ушлые сейчас командуют первыми.

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


    Уменее быстро и качественно чистить картошку — неотъемлемый скил любого выдающегося шеф повора. Шеф повора, не умеющие чистить картошку очень быстро превращаются из поворов в зав. столовкой.

    V>Если будут оставаться силы и время, то по ночам еще можно мастерить автомат для чистки картошки, но опять же, блин, не особо разгуляешься, ибо платят только за картошку, и чистить ее надо очень много, чтобы содержать себя и семью. Так и лежат у каждого в сарае недоделанные близкие сердцу картофелерезки. А через очередные 5 лет полностью меняется формат картошки, она теперь квадратная, требует еще меньше уникальных навыков даже для этого нехитрого действа по ее очистке. Но спроектированный автомат уже явно не стольо эффективен для квадратных картошек. Для них, квадратных, автомат можно построить на совсем других принципах. Засада, как всегда, приходит не с той стороны.


    О как тебя колбасит сегодня!

    V>Взять еще, например, дотнет. Кто мешал сделать раньше подобную компонентную модель? Что, блин, байт-код медлено выполнялся на том железе? А он вообще нужен был ранее?


    Какая связь между компонентной моделью и байт-кодом? Я понимаю ещё, если бы был упомянут рефлекшин. А компонентную модель делали. Хотя бы в той же Дельфе. Не так универсально, но что-то было.

    V>Почему-то есть твердая уверенность, что Nemerle никогда не станет мейнстримом, ибо он не отвечает требованию: "дешевый личный состав".


    Если и не станет, то по другим причинам, а не по этой. "Дешевый личный состав" перешёл с C на C++. Потом с DOS на Windows и на COM, потом с Windows и с C++ на .NET, с COM+ и VB на C#. Переход на Немерле гораздо проще всего вышеперечисленного. Для C# программиста это часы.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[25]: Насколько важен синтаксис языка?
    От: Vermicious Knid  
    Дата: 09.09.06 02:24
    Оценка: 6 (1) +1
    Здравствуйте, pavel74, Вы писали:

    P>Ну вот тогда и пример метода ( в двойных апострофах коменты)

    Зачем столько коментов? Код ведь тривиальнейший.

    P>тоже, но без коментов

    P>checkCondition
    P> |a|
    P> a := self взятьОткудаТоМассив.
    P> a do: [ :each | (each isBitSet: 3 ) еслиДа: [^true] ].
    P> ^false
    P>

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

    Нет никаких блоков кода, в Nemerle есть функции, в C# делегаты. В данном случае "блок кода" выполняет как раз роль анонимной функции, поэтому в моем примере "метод-итератор" как раз будет принимать такую функцию. Так же нет никакого "метода-итератора", есть ряд функций высшего порядка, которые работают с массивами/коллекциями. В библиотеке Nemerle, и даже в .NET BCL, их несколько и каждая выполняет свою роль. В частности в Nemerle есть и аналог do:, метод Iter, но его применять здесь не имеет никакого смысла(да и это будет ближе к императивному стилю, функциональный в Nemerle предпочтительнее), лучше применить специализированный метод.

    checkCondition() : bool
        def a = this.взятьОткудаТоМассив
        a.Exists(_ & 0b1000 != 0)


    Если выяснять установлен ли бит в нужно часто, то можно сделать так:
    module IsBitSetExt
        // в Nemerle есть ограниченное неявное приведение целочисленных типов
        // поэтому определяем только две перегрузки - для типов со знаком и без
        public IsBitSet(this val : ulong, n : int) : bool
            val & (1u << n) != 0
        public IsBitSet(this val : long, n : int) : bool
            val & (1 << n) != 0


    Тогда вышеприведенный фрагмент будет выглядеть так:
    checkCondition() : bool
        def a = this.взятьОткудаТоМассив
        a.Exists(_.IsBitSet(3))


    P>PS. Хотелось бы увидеть также аналог и на C#

    C# 2.0:
    bool checkCondition()
    {
        int[] a = this.взятьОткудаТоМассив; 
        return Array.Exists(a, delegate bool(int x){ return (x & 8) != 0; })
    }


    C# 3.0(+ IsBitSet, определенный через extension methods):
    bool checkCondition()
    {
        var a = this.взятьОткудаТоМассив;
        return Array.Exists(a, x => x.IsBitSet(3));
    }
    Re[15]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 09.09.06 04:03
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


    V>>У скриптового языка должна быть возможность легкой интеграции с высокооптимизированным бинарным кодом. Технология Лисп-машин это позволяет. Безглючное VBA (мощная альтернатива на том же поле) появилось только ближе к 5-й версии Internet Explorer.


    VD>Ради спроведливости... VBA это Офис... Ворд, Эксель... но никак не Internet Explorer.


    Он наверно про VBScript.
    Re: Кстати
    От: McSeem2 США http://www.antigrain.com
    Дата: 09.09.06 05:08
    Оценка: +1 -1 :))
    Здравствуйте, Геннадий Васильев, Вы писали:

    VD>>Задумывался. Когда ты к нему прибегал.


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

    ГВ>[/q]

    Знаешь, Геннадий, а просто потому, что он здесь — главный. Я ни в коем случае не признаю его правоту, но понимаешь ли в чем дело — кто создал эху, тот и хозяин в ней. Так исторически сложилось и поддеживается на RSDN. И это правильно, как бы ты к этому ни относился. И ты должен это учитывать, несмотря на всякие "преведы" уважаемого Влада (извини, Влад, но слово "отвичаю" я приравниваю к слову "превед" в твоей лексике — пожалуйста, избегай впредь падонковщины, иначе я буду причислять тебя к неуважаемым мною падонкам). Такие дела.
    McSeem
    Я жертва цепи несчастных случайностей. Как и все мы.
    Re[15]: Насколько важен синтаксис языка?
    От: vdimas Россия  
    Дата: 09.09.06 06:43
    Оценка: +1 -1
    Здравствуйте, VladD2, Вы писали:

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


    V>>У скриптового языка должна быть возможность легкой интеграции с высокооптимизированным бинарным кодом. Технология Лисп-машин это позволяет. Безглючное VBA (мощная альтернатива на том же поле) появилось только ближе к 5-й версии Internet Explorer.


    VD>Ради спроведливости... VBA это Офис... Ворд, Эксель... но никак не Internet Explorer.


    Ради справедливости, они это все называют как-то вроде MS Visual Basic Scripting Technologies, там и VBScript и VBA и все остальное. IE для прогона скриптов хостит VBA, выставляет VBA-машинке объект верхнего уровня (HTML DOM) и запускает в его контексте VB-выражения. Просто сам термин VBA выделился где-то начиная с 7-го офиса, когда они снабдили эту хрень GUI интерфейсом для редактирования макросов (VBE), отделили от офиса и стали продавать как отдельный продукт.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[19]: Насколько важен синтаксис языка?
    От: vdimas Россия  
    Дата: 09.09.06 06:43
    Оценка:
    Здравствуйте, IT, Вы писали:


    IT>Знаешь сколько стоил в те времена один компьютер. А сколько была зарплата программиста? Хочешь обратно?


    Я имел ввиду не нашу уродскую систему, а "их", разумеется. И под отдачей имел ввиду сумарную долговременную отдачу от вложенных усилий.


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


    IT>Уменее быстро и качественно чистить картошку — неотъемлемый скил любого выдающегося шеф повора. Шеф повора, не умеющие чистить картошку очень быстро превращаются из поворов в зав. столовкой.


    Да. Однако, практикант, который непрерывно чистит картошку уже месяц, будет делать это быстрее меня.


    IT>О как тебя колбасит сегодня!


    Угу, надо было прочесть перед отправкой, снес быв мусор, ибо во-первых толку... а во-вторых — сто раз об одном и том же...


    V>>Взять еще, например, дотнет. Кто мешал сделать раньше подобную компонентную модель? Что, блин, байт-код медлено выполнялся на том железе? А он вообще нужен был ранее?


    IT>Какая связь между компонентной моделью и байт-кодом?


    И я про то, непонятно до сих пор. Сдается мне, они придумают, как все это заставить работать без байт-кода к какой-нить 5-й версии.
    Ибо, блин, даже мощнейший механизм маппинга сегментов кода DLL нифига не работает в дотнете. Ну или еще альтернатива — "плоская" общая память и прочие "поясы надежности" из Сингулярити... Тоже весьма спорно, из-за того, что надо будет всю IT-промышленность с 0-ля переписать. Да и учебники по системному ПО тоже.

    IT>Я понимаю ещё, если бы был упомянут рефлекшин.


    Считай, упомянут, т.к. полноценная компонентная модель без метаинформации невозможна. Кстати, если бы не надо было из байт-кода динамически делать нативный, то можно было бы нехило сэкономить на упрощении приватной для сборки метаинформации (оставить минимум инфы для GC)

    D движется в этом направлении. Но без вливания миллиардов денег — как-то весьма небыстро. Будет как со Схемой. Вменяемый стандарт появится значительно позже морального устаревания.

    IT>А компонентную модель делали. Хотя бы в той же Дельфе. Не так универсально, но что-то было.


    Мало мета-инфы, и отвратительное качество исполнения. Ведь развивались параллельно с Java, однако наработали фактического материала на порядки меньше (речь о фреймворках и стандартах). Да и язык был взят, не то чтобы очень.

    V>>Почему-то есть твердая уверенность, что Nemerle никогда не станет мейнстримом, ибо он не отвечает требованию: "дешевый личный состав".


    IT>Если и не станет, то по другим причинам, а не по этой. "Дешевый личный состав" перешёл с C на C++. Потом с DOS на Windows и на COM, потом с Windows и с C++ на .NET, с COM+ и VB на C#. Переход на Немерле гораздо проще всего вышеперечисленного. Для C# программиста это часы.


    Там подводные камни весьма глубокие. Не представляя дсконально, как он работает, можно одним легким движением (подключением не той либы) сломать программу. И для поиска причины потребуется определенного уровня профи. Возвратилисть к начальным условиям.

    Java и VB получили популярность когда-то из-за простого и детерминированного синтаксиса и семантики. Разве на VB проще писать чем на C++? Да какой там, в разы сложнее! (пришлось очень много колбасить на VB) Элементарные вещи делать запаришься (разве что IDispatch::Invoke часто рулил). Однако, выучить С++ оказывается мало, надо еще научиться писать на нем так, чтобы программа не валилась на каждой второй строчке. А это уже навыки как бы несколько иного характера. Это плата за гибкость, удобство и еще тысячи возможностей. Вот так и с Немерле в сравнении с C#: в C# можно поставить подпись и печать под каждой строкой кода, ибо эта строка правдива и очевидна. А в Немерле 80% кода будет оптическим обманом, типа как в современной С++ программе. Так что, не в изучении базового синтаксиса будет камень преткновения, разумеется. Тут снова напрашивается пример про С++: в нем синтаксических оборотов даже меньше, чем в C#, однако их всевозможные контекстно-зависимые комбинации порождают чудовищную размерность семантики.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[26]: Насколько важен синтаксис языка?
    От: pavel74  
    Дата: 09.09.06 07:14
    Оценка: -1 :)
    Здравствуйте, Vermicious Knid, Вы писали:


    P>>Ну вот тогда и пример метода ( в двойных апострофах коменты)

    VK>Зачем столько коментов? Код ведь тривиальнейший.
    Ну некотрые считают что ST, это нечитабельные "шифрограммы".

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

    "Блок кода", лямбда, анонимная функция, делегаты — это по сути одно и тоже. способ передать функцию и вызвать ее из другого места. Хорошо буду называть это лямбдой. Ну да не будем спорить о терминологии — суть то понятна.

    ок, чуть уточняем и изменяем пример.
    a. в массиве числа, но могут быть целые, даблы и большие целые (неограниченного размера, в ST тип LargeInteger).
    b. массив данных по прежнему может быть разных типов, главное есть итератор do: , принимающий лямбду.
    c. условие проверки такое: все хорошо если в массиве есть 2 смежных элемента , из которых второй равен первый*2. Обращаю внимание что типы чисел в массиве данных разные.

    check
      |a prevItem|
      a:= self getDataArray.
      a do: [ :each| 
        (prevItem<>nil) ifTrue: [
          (prevItem*2=each) ifTrue: [^true]. "условие выполнилось прерываем обход и выходим из функции"
        ]. 
        prevItem:=each.
      ].
      ^false


    А как сейчас будет на Nemerle, C# 2.0 C# 3.0 Все предыдущие примеры полностью неподходят под немного изменившиеся условия, и позвольте обратить внимание что при изменении требований мне пришлось чуть-чуть поправить код (фактически только логическую часть) передаваемый методу обхода массива.
    Re[27]: Насколько важен синтаксис языка?
    От: Vermicious Knid  
    Дата: 09.09.06 12:36
    Оценка: +1
    Здравствуйте, pavel74, Вы писали:

    VK>>Зачем столько коментов? Код ведь тривиальнейший.

    P>Ну некотрые считают что ST, это нечитабельные "шифрограммы".
    Ну значит для них примерно так оно и есть, а может я просто привык читать "шифрограммы".

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

    P>"Блок кода", лямбда, анонимная функция, делегаты — это по сути одно и тоже. способ передать функцию и вызвать ее из другого места. Хорошо буду называть это лямбдой. Ну да не будем спорить о терминологии — суть то понятна.
    Суть в том, что блоки кода в ST и значения функциональных типов в Nemerle это совершенно разные вещи. А то, что и те, и другие можно использовать для передачи некой функции и вызова из другого места это всего лишь досадное недоразумение.

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

    Простой рабочий пример:
    def x = { true };

    Здесь не будет создано никакой лямбды, значение x просто проинициализируется в true и его тип будет выведен как bool. Но этот же блок кода может быть аргументом макроса(впрочем как и любое другое выражение), такого как например if, while, for, foreach, который в свою очередь может использовать его в генерации кода как посчитает нужным.

    P>a. в массиве числа, но могут быть целые, даблы и большие целые (неограниченного размера, в ST тип LargeInteger).

    P>b. массив данных по прежнему может быть разных типов, главное есть итератор do: , принимающий лямбду.
    P>c. условие проверки такое: все хорошо если в массиве есть 2 смежных элемента , из которых второй равен первый*2.
    Нда, очень странные условия. С трудом могу представить себе ситуацию, когда задача может стоять именно таким образом. Тут явно что-то не так с дизайном.

    P>А как сейчас будет на Nemerle, C# 2.0 C# 3.0

    Вообще-то по хорошему никак не должно быть, так как постановка задачи какая-то очень странная(тут надо срочно что-то делать с архитектурой самого приложения, а не решать эту задачу). Но я в последний раз поддамся на провокацию и напишу пример. Хочешь с минимальными изменениями, будет тебе с минимальными изменениями. Только никакого LargeInteger не будет, потому что в .NET он не предусмотрен(да и полезен он бывает только в очень незначительном количестве задач).
    using System.Convert
    // class Foobar
    // ...
    check() : bool
        mutable prevN
        DataArray.Exists(n =>
            if (prevN != null && (ToDouble(n) == ToDouble(prevN) * 2.0))
                true
            else { prevN = n; false })

    А в погоне за краткостью можно вообще вот так написать:
    check() : bool
        mutable prevN
        DataArray.Exists(n => (prevN != null && (ToDouble(n) == ToDouble(prevN) * 2.0)) || { prevN = n; false })

    Писать примеры для C# 2/3 мне лень, будет примерно тоже самое, просто не так кратко.

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

    Как видно из примера выше прекрасно подходят. Пример на Nemerle короче и достаточно читабелен. Кстати обрати внимание, что в этих и предыдущем примерах на Nemerle нет ни одного return(в отличие от твоих примеров на ST, которые просто кишат "крышечками").

    А если бы Nemerle был динамическим языком, то вообще можно было бы записать в одну коротенькую строчку:
     
    DataArray.Exists(n => (prevN && (n == prevN * 2)) || { prevN = n; false })

    Но это не так, и слава богу. И кстати если не гнаться за краткостью и твоим "немного подправить", то на Nemerle гораздо идеологически правильней написать этот пример так(но понятное дело для человека, который ничего не знает о паттерн-мэтчинге этот пример будет темным лесом):
    check() : bool
        def chk(_l)
            | x :: y :: _ when ToDouble(y) == ToDouble(x) * 2.0 => true
            | _ :: rest => chk(rest)
            | [] => false
        chk(DataArray.ToList())

    А еще лучше, чтобы типы чисел были одинаковыми, и данные передавались функции check в качестве параметра:
    check(data : list[double]) : bool
        | x :: y :: _ when x == y * 2.0 => true
        | _ :: rest => check(rest)
        | [] => false

    А в таком случае вообще лучше написать обобщенную функцию, которая бы проверяла есть ли в списке два, три, n последовательных значений, которые объединяет некое условие:
    module ExistsSeqExt
        // для двух значений
        public ExistsSeq[T](this a : list[T], f : T*T->bool) : bool
            match(a)
                | x :: y :: _ when f(x,y) => true
                | _ :: rest => ExistsSeq(rest, f)
                | _ => false
    
        // для трех значений
        public ExistsSeq[T](this a : list[T], f : T*T*T->bool) : bool
            match(a)
                | x :: y :: z :: _ when f(x,y,z) => true
                | _ :: rest => ExistsSeq(rest, f)
                | _ => false

    А вот и пример использования этих функций:
    [1.0,2.0,3.0].ExistsSeq((x,y) => y == x * 2.0) // true
    [1,2,3].ExistsSeq((x,y) => x == y) // false
    [2,6,5,4,1].ExistsSeq((x,y,z) => z == y-1 && y == x-1) // true
    Re[20]: Оффтопик: Nemerle
    От: FDSC Россия consp11.github.io блог
    Дата: 09.09.06 13:11
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    FDS>>Не видел ещё не одного вопроса по C#, на который нельзя было бы ответить после внимательного чтения спецификации (на это, правда, не все способны). Форумные вопросы в принципе должны возникать только от нестандартной реализации и багов (по крайней мере, что касается C#).


    VD>Значит плохо смотрел. Я сам иногда нахожу интересные ответы хотя казалось бы многие спецификации дотнета знаю чуть ли на изусть.


    По C# есть? Можно ссылку? Интересно посмотреть... (если не трудно, конечно)
    Да, я не часто туда захожу.

    По поводу ответов и вопросов — они действительно интересные, не спорю, но, скажем, конкретно по C# у меня ещё не возникало ни одного вопроса, на который бы мне нужно было обращаться в форум: это огромный плюс для этого языка в моих глазах (и в форуме не видел такого, что бы вообще нельзя было понять самостоятельно). А по Nemerle у меня уже десяток вопросов (на которые я сам не знаю ответа), которые возникли просто после написания простейших функций. [я бы сказал, что на уровне простейших функций Scheme гораздо легче для изучения, чем Nemerle ]

    VD>У меня большое ощущение, что ты читал статью или по диагонали, или просто не вдумывался.

    VD>Попробуй еще раз прочесть раздел: Локальные функции
    Автор(ы): Сергей Туленцев, Владислав Чистяков
    Дата: 23.05.2006
    Производительность труда программиста в основном зависит от самого программиста. Однако даже самый опытный и знающий программист мало что может без подходящего инструмента. Эта статья открывает цикл статей об одном из таких инструментов, еще мало известном среди программистов, но очень многообещающем. Язык Nemerle, о котором пойдет речь в этих статьях, на первый взгляд очень похож на слегка улучшенный C#, но привносит многое из передовых исследовательских языков. Данная статья рассказывает об отличиях Nemerle от C# (как наиболее близкого языка)и является неформальным введением в язык.
    и далее.


    Хм, может я и не вчитывался (кое-где честно говоря действительно по диагонали), но этот раздел я раза три или четыре прочитал (включая файлы на самом сайте), и вот ну не вижу отличий: чем в Delphi функции — не замыкания! (см. пример ниже)

    VD>У функций Немерла два основных отличий.

    VD>1. Их функции являются полноценными лексическими замыканиями. Так что ты можешь использовать напрямую все переменные и функции объявленные выше данной. Например:
    VD>
    VD>usung System.Console;
    
    VD>mutable x = 5;
    VD>def add(a, b) { a + b }
    VD>def addX(c) { add(c, x); }
    
    VD>WriteLine(addX(2));
    VD>


    Но чем Delphi в данном случае уступает [кроме отсутствия type inference]?

    program Sample;
    
    {$APPTYPE CONSOLE}
    
    procedure Main;
    var
      x : integer;
      tmpString : ANSIString;
    
      function add(const a, b: integer): integer;
      begin
        Result := a + b;
      end;
    
      function addX(const c : integer): integer;
      begin
        Result := add(c, x);
      end;
    
      const Cx = 5;
    
    begin
      x := Cx;
      WriteLn(addX(2));
      ReadLn(tmpString);
    end;
    
    begin
      Main;
    end.


    Выводит в консоль число "7", так же как и ваш пример.

    Этот код фактически аналогичен приведённому выше, кроме того, что внутренняя функция может быть использована в Delphi только в области её объявления (в пределах main, включая вложения).


    VD>2. Функции в Немерле являются значениями. Над ними можно совершать преобразования. В общем-то пример выше как раз это показал, но не очень явно. А вот как можно:

    VD>
    VD>usung System.Console;
    
    VD>mutable x = 5;
    VD>def add(a, b) { a + b }
    VD>def addX = add(x, _);
    // Я думаю, надо def addX = add(_, x); ?
    
    VD>WriteLine(addX(2));
    VD>


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


    FDS>> Опять же, в каком документе это описано? Этот язык, наверное, в несколько раз круче, чем я о нём думаю, и всё только потому, что документация чёрт знает как оформлена. Эх, ну почему они не из Microsoft?!

    VD>Статья сделана по их сайту. Там конечно есть не все, но очень многое. Да и в статье есть многое и в одном месте.

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

    Компилируется:
    ...
    class C
    {
        public static Method(i : ref int) : int
        {
            i = i + 1;
            i
        }
    }
    mutable x = 5;
    
    WriteLine(C.Method(ref x));
    _ = ReadLine();


    Некомпилируется:
    ...
    class C
    {
        public static Method(i : ref int) : int
        {
            i = i + 1;
            i
        }
    }
    
    def MM(i : ref int) : int
    {
        i = i + 1;
        i
    }
    
    mutable x = 5;
    
    WriteLine(C.Method(ref x));
    WriteLine(MM(ref x));
    _ = ReadLine();


    Ошибки:

    nested ref/out type found E:\Prg\temp\070906\ConsoleApplication3\Main.n 22 1 ConsoleApplication3

    needed a writable location for assignment target, got a reference to local symbol `a function parameter i', which is read-only E:\Prg\temp\070906\ConsoleApplication3\Main.n 24 1 ConsoleApplication3

    in argument #1 of +.s, needed a int, got void: void is not a subtype of int E:\Prg\temp\070906\ConsoleApplication3\Main.n 24 5 ConsoleApplication3

    expected int, got void in function return type: void is not a subtype of int E:\Prg\temp\070906\ConsoleApplication3\Main.n 22 1 ConsoleApplication3

    wrong number of parameters in call, needed 0, got 1 E:\Prg\temp\070906\ConsoleApplication3\Main.n 31 11 ConsoleApplication3



    Просто скопировал метод и он перестал компилироваться
    Что я должен думать о вменяемости компилятора? Естественно у меня чисто познавательные вопросы: потому что язык мне всё-таки интересен для практических целей. Если я использую язык, я должен быть уверен, что по крайней мере элементарные операции я на нём умею делать.
    Может я плохо искал, но что-то не в вашей статье, ни на сайте не нашёл объяснения данному явлению (впрочем, я очень быстро путаюсь в разрозненных фактах). А ведь сделал совершенно элементарную вещь

    FDS>>С вашей интеграцией не так, что нужна последняя версия VSIP SDK. Насколько я понимаю, по Dial-Up её не скачать.

    VD>Скоро все будет ОК. У нас уже есть так называемый PLK который позволит сделать инсталлятор. Но надо кое что доделать.

    Вот это было бы круто

    P.S. Можно самый важный вопрос: вы знаете о Nemerle довольно много: это вы исходники разбирали или всё из примеров вывели?
    Вообще, там есть в исходниках какой-нибудь отдельный файл описания синтаксиса (вкл. макросы)?
    Re[27]: Дополнение к посту Vermicious Knid
    От: FDSC Россия consp11.github.io блог
    Дата: 09.09.06 13:23
    Оценка:
    Здравствуйте, pavel74, Вы писали:

    P>ок, чуть уточняем и изменяем пример.

    P>a. в массиве числа, но могут быть целые, даблы и большие целые (неограниченного размера, в ST тип LargeInteger).
    P>b. массив данных по прежнему может быть разных типов, главное есть итератор do: , принимающий лямбду.
    P>c. условие проверки такое: все хорошо если в массиве есть 2 смежных элемента , из которых второй равен первый*2. Обращаю внимание что типы чисел в массиве данных разные.

    P>
    P>check
    P>  |a prevItem|
    P>  a:= self getDataArray.
    P>  a do: [ :each| 
    P>    (prevItem<>nil) ifTrue: [
    P>      (prevItem*2=each) ifTrue: [^true]. "условие выполнилось прерываем обход и выходим из функции"
    P>    ]. 
    P>    prevItem:=each.
    P>  ].
    P>  ^false
    P>


    P>А как сейчас будет на Nemerle, C# 2.0 C# 3.0 Все предыдущие примеры полностью неподходят под немного изменившиеся условия, и позвольте обратить внимание что при изменении требований мне пришлось чуть-чуть поправить код (фактически только логическую часть) передаваемый методу обхода массива.


    Дополнение: Vermicious Knid преобразовывал их к double, я опишу, как это сделать строго.

    P>a. в массиве числа, но могут быть целые, даблы и большие целые (неограниченного размера, в ST тип LargeInteger).


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

    P>b. массив данных по прежнему может быть разных типов, главное есть итератор do: , принимающий лямбду.


    Ерунда, это без разницы, если все типы поддерживают один и тот же интерфейс. Это сделать не сложно. Другое дело, что придётся писать небольшой класс-обёртку (один) для стандартных типов, что бы они то же поддерживали этот интерфейс.

    P>c. условие проверки такое: все хорошо если в массиве есть 2 смежных элемента , из которых второй равен первый*2. Обращаю внимание что типы чисел в массиве данных разные.


    Без проблем, если есть интерфейсы. Просто без проблем...
    Re[14]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 09.09.06 13:34
    Оценка: +1
    Здравствуйте, vdimas, Вы писали:

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


    К>>>Ты не с той стороны смотришь, тебе как пользователю автокада глубоко пофигу на чём там что написано — лишь бы работало, а вот если бы ты был автором — было бы совсем иначе


    FDS>>Это вы не поняли: ведь AutoCAD не на лисп написан. Это скрипты для AutoCAD пишутся на ЛИСП и мне, как пользователю это не всё равно, потому что скриптовый язык я должен знать.


    V>У скриптового языка должна быть возможность легкой интеграции с высокооптимизированным бинарным кодом. Технология Лисп-машин это позволяет. Безглючное VBA (мощная альтернатива на том же поле) появилось только ближе к 5-й версии Internet Explorer.


    Ну и? А для программистов, которые пишут на Лиспе разве важно, как было писать этот ЛИСП другим программистам. Нет, им важно удобство. Покажите мне удобство для программистов, которые используют язык, а не пишут для него компилятор. Я могу за день написать простой компилятор языка assembler для Intel 8080, например, или Siemens не помню каких, но пользоваться то этим компилятором не мне. Понимаете о чём речь? Вы мне доказыватете, что для ЛИСПа удобно писать компилятор, а нужно доказывать что НА ЛИСПе удобно писать.
    Re[25]: Не нужность super return (нелок. возврата) [рассм. п
    От: FDSC Россия consp11.github.io блог
    Дата: 09.09.06 14:02
    Оценка:
    Здравствуйте, pavel74, Вы писали:

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



    FDS>>Банально

    FDS>>public static void ForEach<T>(T root, Action<T> action)
    FDS>>  where T: IRecursible<T>
    FDS>>{
    FDS>>  action(root);
    FDS>>  CRT Child = root.LoadFromDataBaseChildAndLock();
    FDS>>  foreach(T Child in root)
    FDS>>{
    
    FDS>>      ForEach(Child, action);
    FDS>>}
    FDS>>Child.Unlock();
    FDS>>}
    S>>>


    FDS>>и уже ошибка


    P>ну дак обложить обработкой ошибок, тем более если передан внешний блок кода, то существует вероятность что там может возникнуть эксепшн. А нелокальный возврат это фактически "особый" эксепшен.


    Т.е. вы предлагаете примерно так:

    FDS>>public static void ForEach<T>(T root, Action<T> action)
    FDS>>  where T: IRecursible<T>
    FDS>>{
    try{
    FDS>>  action(root);
    FDS>>  CRT Child = root.LoadFromDataBaseChildAndLock();
    FDS>>  foreach(T Child in root)
    FDS>>{
    
    FDS>>      ForEach(Child, action);
    FDS>>}
    FDS>>Child.Unlock();
    }
    cath(super return event E)
    {
      Child.Unlock();
      super return E;
    }
    FDS>>}
    S>>>


    Причём этот super return должен вызываться в том же контексте, что и в переданном блоке.

    Да посмотрите же, что это?! Да ведь наш super return превратился в обыкновенный return, возвращающий управление ВЫЗЫВАЮЩЕЙ функции! Ну и зачем он тогда нужен? Не проще и быстрее его реализовать как return?

    public static ResultAction ForEach<T>(T root, Action<T> action)
      where T: IRecursible<T>
    {
        ResultAction RA = action(root);
           if (RA.isExecuted)
              return RA;
    
      CRT Child = root.LoadFromDataBaseChildAndLock();
    
      foreach(T Child in root)
      {
          RA = ForEach(Child, action);
            if (RA.isExecuted)
              break;
      }
      Child.Unlock();
      return RA;
    }


    И что, это намного хуже и сложнее? И наверняка быстрее работает, чем перехват повторно вызывающихся нелокальных возвратов.
    Re[20]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 09.09.06 14:54
    Оценка: +1 -1
    Здравствуйте, vdimas, Вы писали:

    V>А в Немерле 80% кода будет оптическим обманом, типа как в современной С++ программе.


    Откуда такая уверенность? Опять макросы? Зря переживаешь. Я вот за месяц интенсивной и плодотворной работы с N не написал ещё ни одного. Но зато вижу, что те задачи которые я решаю на C# решались бы на порядок сложнее и соответственно привели бы к более сложному, непонятному и запутанному коду.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[20]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 09.09.06 15:05
    Оценка: :))
    Здравствуйте, vdimas, Вы писали:

    V>Ибо, блин, даже мощнейший механизм маппинга сегментов кода DLL нифига не работает в дотнете. Ну или еще альтернатива — "плоская" общая память и прочие "поясы надежности" из Сингулярити... Тоже весьма спорно, из-за того, что надо будет всю IT-промышленность с 0-ля переписать. Да и учебники по системному ПО тоже.


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

    IT>>А компонентную модель делали. Хотя бы в той же Дельфе. Не так универсально, но что-то было.


    V>Мало мета-инфы, и отвратительное качество исполнения. Ведь развивались параллельно с Java, однако наработали фактического материала на порядки меньше (речь о фреймворках и стандартах). Да и язык был взят, не то чтобы очень.


    Кто тут на Delphi наезжает? А??? Что значит "не то что бы очень", да я тебя:
    Ты посмотри, половина фич в C# уже давно были в Дельфи, причём некоторых не было в Яве :o)

    V>>>Почему-то есть твердая уверенность, что Nemerle никогда не станет мейнстримом, ибо он не отвечает требованию: "дешевый личный состав".


    IT>>Если и не станет, то по другим причинам, а не по этой. "Дешевый личный состав" перешёл с C на C++. Потом с DOS на Windows и на COM, потом с Windows и с C++ на .NET, с COM+ и VB на C#. Переход на Немерле гораздо проще всего вышеперечисленного. Для C# программиста это часы.


    V>Там подводные камни весьма глубокие. Не представляя дсконально, как он работает, можно одним легким движением (подключением не той либы) сломать программу. И для поиска причины потребуется определенного уровня профи. Возвратилисть к начальным условиям.


    Вот это правильно.

    V>Java и VB получили популярность когда-то из-за простого и детерминированного синтаксиса и семантики. Разве на VB проще писать чем на C++? Да какой там, в разы сложнее! (пришлось очень много колбасить на VB) Элементарные вещи делать запаришься (разве что IDispatch::Invoke часто рулил). Однако, выучить С++ оказывается мало, надо еще научиться писать на нем так, чтобы программа не валилась на каждой второй строчке. А это уже навыки как бы несколько иного характера. Это плата за гибкость, удобство и еще тысячи возможностей. Вот так и с Немерле в сравнении с C#: в C# можно поставить подпись и печать под каждой строкой кода, ибо эта строка правдива и очевидна. А в Немерле 80% кода будет оптическим обманом, типа как в современной С++ программе. Так что, не в изучении базового синтаксиса будет камень преткновения, разумеется. Тут снова напрашивается пример про С++: в нем синтаксических оборотов даже меньше, чем в C#, однако их всевозможные контекстно-зависимые комбинации порождают чудовищную размерность семантики.


    Покажите синтаксические конструкции Nemerle, под которыми нельзя поставить "подпись и печать". Очень интересно. Я вот как раз сейчас думаю, не попробовать ли помучиться и перейти на него.
    Re[19]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 09.09.06 15:05
    Оценка:
    Здравствуйте, IT, Вы писали:

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


    V>>А вообще, мейнстрим не зря все время ругают. Мейнстрим — это средний и мелкий бизнес.


    IT>В IT весь бизнес мелкий, даже в крупных компаниях. Небольшие команды, каждая со своими правилами и стандартами.


    Но крупные компании могут в любом случае позволить себе инвестировать в IT гораздо больше, чем мелкий бизнес.

    V>>Это потребность получить максимум отдачи при минимум вложениях. "Минимум вложения" — это ключевое слово, это как таковое условие существования мелкого бизнеса, и оно все объясняет.


    IT>Нет такой потребности. У менеджера есть потребность выполнить задание. Если это задание — "минимум вложения", то это становится потребностью.


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

    V>>Менеджеры набирают минимально грамотный личный состав, достаточный для выполнения какого-либо проекта (уже акцентировал внимание на этом) ввиду экономии на ЗП. Давным-давно никто не пытается набрать самых лучших и сделать что-либо действительно хорошее.


    IT>Тебе просто не повезло, не обобщай и по скорее меняй работу.


    Таких "неповезло" у нас в стране не так мало, лично я знаю как минимум 3 фирмы лично (при том, что не видел фирмы, где точно берут и классных специалистов и выпускников).

    V>>Сегодня рулят решения по-месту, и блин, это при том, что классов задач до смешного мало. Такое распыление сил, такая непроизводительная потеря человекочасов программистким сообществом на изготовление сотен тысяч одинаковых по-сути софтин (и одинаково слабых, разумеется, при таком распылении усилий). В общем, такой подход, ИМХО, тормозит развитие выч.области как таковой.


    IT>Классов задач действительно не много. Но насчёт одинаковых софтин ты загнул. Софтины не могут быть одинкавыми, потому что они обслуживают разный бизнес. У каждого бизнеса свои требования. Там где требования сходятся появляются ширпотребовские решения. Остальное — индпошив.


    Ну, этот инд. пошив всё-таки друг на друга часто похож. Хотя не настолько, что бы он встречался в сотнях фирм.

    V>>Взять буквально еще 15-20 лет назад, программистов было на 2 порядка меньше, но они умудрялись двигать IT ничуть не медленнее чем сейчас (если не быстрее).


    IT>20 лет назад большая часть программистов в нерушимой занималась расчётом зарплаты на ЕС ЭВМ. Чуть меньшая часть протирала штаны в НИИ. Оставшаяся на той же ЭВМ рассчитывала траектории баллистических ракет. IT никто ни куда не двигал, по крайней мере в необъятной.


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

    V>>И окупаемость была гораздо выше.


    IT>Знаешь сколько стоил в те времена один компьютер. А сколько была зарплата программиста? Хочешь обратно?


    +

    V>>Почти все очень грамотные IT-люди того времени сейчас весьма состоятельные люди.


    IT>Грамотные IT-люди того времени сидят и заполняют таможенные декларации, т.к в своё время им не хватило сил на переход с ЕС ЭВМ на писюки. Правда, другие, чуть менее грамотные, но более ушлые сейчас командуют первыми.


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

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


    IT>Уменее быстро и качественно чистить картошку — неотъемлемый скил любого выдающегося шеф повора. Шеф повора, не умеющие чистить картошку очень быстро превращаются из поворов в зав. столовкой.


    А вы видели как зав. столовой чистят сардельки
    Но шеф повар всё-таки обычно картошку не чистит. Да?

    V>>Почему-то есть твердая уверенность, что Nemerle никогда не станет мейнстримом, ибо он не отвечает требованию: "дешевый личный состав".


    IT>Если и не станет, то по другим причинам, а не по этой. "Дешевый личный состав" перешёл с C на C++. Потом с DOS на Windows и на COM, потом с Windows и с C++ на .NET, с COM+ и VB на C#. Переход на Немерле гораздо проще всего вышеперечисленного. Для C# программиста это часы.


    Почему же я до сих пор так и не смог написать даже простую работающую программу на Nemerle. Я уже даже на Scheme стал писать (в процессе спора на форуме), а вот на Nemerle — ну никак, ну не получается!

    V>>Если будут оставаться силы и время, то по ночам еще можно мастерить автомат для чистки картошки, но опять же, блин, не особо разгуляешься, ибо платят только за картошку, и чистить ее надо очень много, чтобы содержать себя и семью. Так и лежат у каждого в сарае недоделанные близкие сердцу картофелерезки. А через очередные 5 лет полностью меняется формат картошки, она теперь квадратная, требует еще меньше уникальных навыков даже для этого нехитрого действа по ее очистке. Но спроектированный автомат уже явно не стольо эффективен для квадратных картошек. Для них, квадратных, автомат можно построить на совсем других принципах. Засада, как всегда, приходит не с той стороны.


    IT>О как тебя колбасит сегодня!


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

    А сегодня грамотные IT-люди чуствуют себя лишними на этом празднике жизни. Ибо сегодня творцу не надо уметь готовить невообразимые уникальные блюда для честного и большого заработка. Напротив, необходимо демонстрировать умение быстрее всех чистить картошку. Если будут оставаться силы и время, то по ночам еще можно мастерить автомат для чистки картошки, но опять же, блин, не особо разгуляешься, ибо платят только за картошку, и чистить ее надо очень много, чтобы содержать себя и семью. Так и лежат у каждого в сарае недоделанные близкие сердцу картофелерезки. А через очередные 5 лет полностью меняется формат картошки, она теперь квадратная, требует еще меньше уникальных навыков даже для этого нехитрого действа по ее очистке. Но спроектированный автомат уже явно не стольо эффективен для квадратных картошек. Для них, квадратных, автомат можно построить на совсем других принципах. Засада, как всегда, приходит не с той стороны.

    V>-------

    Почему-то есть твердая уверенность, что Nemerle никогда не станет мейнстримом, ибо он не отвечает требованию: "дешевый личный состав". В лучшем случае станет мощным инструментом для профессионалов и то, не ранее, чем обрастет вменяемым и неглючным окружением для разработки (не камень ни в чей огород, просто озвучка "мнения зала").

    А С++ что, отвечает требованию дешёвый личный состав? Я знаю только самые основы C++, но могу завалить по нему многих студентов профильных специальностей своего машиностроительного [ ] ВУЗа. Есть люди, которые по сравнению со мной хорошо знают C++, но есть люди, которые могут завалить их на стандартных библиотеках. Ну и где же тут дешёвый личный состав? В Nemerle не нужно знать, что такое указатель. И, кстати, скажем макросы фактически являются прозрачной функциональностью Nemerle, следовательно, на нём можно программировать и без их знания. Я уже не говорю, что с помощью макросов Nemerle можно классно механизировать для чистки картошки, надо только нормальные книжки по нему написать ещё. И документацию для тех, кто с неё свои книжки будет списывать. Так что Nemerle вполне может впасть в (нет, не маразм) MainStream.
    Re[20]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 09.09.06 15:40
    Оценка: :)
    Здравствуйте, FDSC, Вы писали:

    IT>>В IT весь бизнес мелкий, даже в крупных компаниях. Небольшие команды, каждая со своими правилами и стандартами.

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

    Это правда. Именно поэтому в больших компаниях полно зомби проектов, которые уже умерли, но ещё ходят и пугают окружающих.

    FDS>У мелкого бизнеса есть такая потребность, так как он испытывает недостаток в финансировании. Могу даже сказать больше: когда нам читали лекции по экономике, лектор жаловался, что его "стартапу" (человек 15 программистов ) не хватает финансирования уже второй год, несмотря на то, что они получают гранты от государтсва (инвесторы ставят абсолютно неприемлимые условия).


    Может главная цель бизнеса твоего лектора как раз получение грантов, а не получение прибыли?

    IT>>Тебе просто не повезло, не обобщай и по скорее меняй работу.

    FDS>Таких "неповезло" у нас в стране не так мало, лично я знаю как минимум 3 фирмы лично (при том, что не видел фирмы, где точно берут и классных специалистов и выпускников).

    Ну так и в чём проблема? Не нравится — уходи.

    IT>>Классов задач действительно не много. Но насчёт одинаковых софтин ты загнул. Софтины не могут быть одинкавыми, потому что они обслуживают разный бизнес. У каждого бизнеса свои требования. Там где требования сходятся появляются ширпотребовские решения. Остальное — индпошив.


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


    В том то и дело, что похож, но не идентичен, а значит не взаимозаменяем.

    IT>>Грамотные IT-люди того времени сидят и заполняют таможенные декларации, т.к в своё время им не хватило сил на переход с ЕС ЭВМ на писюки. Правда, другие, чуть менее грамотные, но более ушлые сейчас командуют первыми.


    FDS>Имеются ввиду, видимо, западные специалисты.


    Нет. Западные специалисты как раз очень быстро пересели с мейнфреймов на бэйсик. У них тогда компании под этого дело бесплатные курсы повсеместно устраивали.

    IT>>Если и не станет, то по другим причинам, а не по этой. "Дешевый личный состав" перешёл с C на C++. Потом с DOS на Windows и на COM, потом с Windows и с C++ на .NET, с COM+ и VB на C#. Переход на Немерле гораздо проще всего вышеперечисленного. Для C# программиста это часы.


    FDS>Почему же я до сих пор так и не смог написать даже простую работающую программу на Nemerle. Я уже даже на Scheme стал писать (в процессе спора на форуме), а вот на Nemerle — ну никак, ну не получается!


    А что именно не получается?
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[21]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 09.09.06 16:19
    Оценка:
    Здравствуйте, IT, Вы писали:

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


    IT>>>В IT весь бизнес мелкий, даже в крупных компаниях. Небольшие команды, каждая со своими правилами и стандартами.

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

    IT>Это правда. Именно поэтому в больших компаниях полно зомби проектов, которые уже умерли, но ещё ходят и пугают окружающих.


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

    FDS>>У мелкого бизнеса есть такая потребность, так как он испытывает недостаток в финансировании. Могу даже сказать больше: когда нам читали лекции по экономике, лектор жаловался, что его "стартапу" (человек 15 программистов ) не хватает финансирования уже второй год, несмотря на то, что они получают гранты от государтсва (инвесторы ставят абсолютно неприемлимые условия).


    IT>Может главная цель бизнеса твоего лектора как раз получение грантов, а не получение прибыли?


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


    IT>>>Тебе просто не повезло, не обобщай и по скорее меняй работу.

    FDS>>Таких "неповезло" у нас в стране не так мало, лично я знаю как минимум 3 фирмы лично (при том, что не видел фирмы, где точно берут и классных специалистов и выпускников).

    IT>Ну так и в чём проблема? Не нравится — уходи.


    Гы, а если туда, где нравиться не возьмут?
    А вы уверены, что лично мне где-нибудь понравиться вообще?
    Ну ладно, пусть такое место существует: как его найти? Я не знаю ни одного, которое точно устраивает

    IT>>>Классов задач действительно не много. Но насчёт одинаковых софтин ты загнул. Софтины не могут быть одинкавыми, потому что они обслуживают разный бизнес. У каждого бизнеса свои требования. Там где требования сходятся появляются ширпотребовские решения. Остальное — индпошив.


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


    IT>В том то и дело, что похож, но не идентичен, а значит не взаимозаменяем.


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

    IT>>>Грамотные IT-люди того времени сидят и заполняют таможенные декларации, т.к в своё время им не хватило сил на переход с ЕС ЭВМ на писюки. Правда, другие, чуть менее грамотные, но более ушлые сейчас командуют первыми.


    FDS>>Имеются ввиду, видимо, западные специалисты.


    IT>Нет. Западные специалисты как раз очень быстро пересели с мейнфреймов на бэйсик. У них тогда компании под этого дело бесплатные курсы повсеместно устраивали.


    И где они сейчас, те кто программировали на Бейсик.... (исключить: "Билл Гейтс" )
    Всё таки даже у них, что бы что-то заработать надо быть довольно грамотным.

    IT>>>Если и не станет, то по другим причинам, а не по этой. "Дешевый личный состав" перешёл с C на C++. Потом с DOS на Windows и на COM, потом с Windows и с C++ на .NET, с COM+ и VB на C#. Переход на Немерле гораздо проще всего вышеперечисленного. Для C# программиста это часы.


    FDS>>Почему же я до сих пор так и не смог написать даже простую работающую программу на Nemerle. Я уже даже на Scheme стал писать (в процессе спора на форуме), а вот на Nemerle — ну никак, ну не получается!


    IT>А что именно не получается?


    здесь
    Автор: FDSC
    Дата: 08.09.06
    в рамках этого форума частично обсуждаем.
    Не получается понять синтаксис языка: что ни напишу, компилятор всё время ругается . Подожду пока выйдет какая-нибудь нормальная документация...
    Re[28]: А как оно в Nemerle?
    От: Beam Россия  
    Дата: 09.09.06 16:45
    Оценка: 5 (2) -2
    Здравствуйте, VladD2, Вы писали:

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


    Я открыл статью Nemerle в Wikipedia, и я увидел, что та проблема, значение который Вы так пытаетесь преувеличить (незавершение работы метода, в который передан BlockClosure с возвратом), имеется и у Nemerle в макросах. Вот выдержка из этой статьи

    Database accessibility
    For example, using Nemerle macros for SQL you can write:

    ExecuteReaderLoop ("SELECT firstname, lastname FROM employee WHERE firstname = $myparm", dbcon,
    {
      System.Console.WriteLine ("Name: {0} {1}", firstname, lastname) 
    });


    instead of

    string sql = "SELECT firstname, lastname FROM employee WHERE firstname = :a";
    NpgsqlCommand dbcmd = new NpgsqlCommand (sql, dbcon, dbtran);
    dbcmd.Parameters.Add("a", myparm);
    
    NpgsqlReader reader = dbcmd.ExecuteReader();
    
    while(reader.Read()) {
      string firstname = reader.GetString (0);
      string lastname = reader.GetString (1);
      System.Console.WriteLine ("Name: {0} {1}", firstname, lastname) 
    }
    reader.Close();
    dbcmd.Dispose();


    Допустим есть у нас такой макрос. Что произойдет если использовать его так:
    ExecuteReaderLoop ("SELECT firstname, lastname FROM employee WHERE firstname = $myparm", dbcon,
    {
      System.Console.WriteLine ("Name: {0} {1}", firstname, lastname);
        return;
    });


    Я добавил слово return. Очевидно, что измененный код будет подставлен в макрос и, как следствие, весь макрос не будет выполнен до конца. А значить функциональность программы будет нарушена (не будет освобождены ресурсы). Судя по Вашим словам теперь Вы откажетесь от использования макросов в Nemerle, т.к. "их использование может быть небезопасно". Или у Вас имеются какие-то правила, позволяющие избегать данных проблем?

    P.S. Считаю, что в данном случае сравнение макросов Nemerle и блоков Smalltalk абсолютно корректно, т.к. семантика их использования одинакова: должен быть выполнен какой-то код (который написан в макросе/блоке), и при его выполнении в некоторых местах будет вызываться/подставляться внешний код (переданный в качестве параметра)
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[21]: Оффтопик: Nemerle
    От: Vermicious Knid  
    Дата: 09.09.06 17:51
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS>А по Nemerle у меня уже десяток вопросов (на которые я сам не знаю ответа), которые возникли просто после написания простейших функций. [я бы сказал, что на уровне простейших функций Scheme гораздо легче для изучения, чем Nemerle ]

    Вполне естественно. Scheme и Lisp вообще очень простые для изучения языки(сложно только научиться пользоваться ими эффективно). Пожалуй даже проще чем C# 2.0, а Nemerle все таки C# 2.0 + ML + макро-система. Но для эффективного использования досконального знания Nemerle совсем не нужно.

    FDS>Хм, может я и не вчитывался (кое-где честно говоря действительно по диагонали), но этот раздел я раза три или четыре прочитал (включая файлы на самом сайте), и вот ну не вижу отличий: чем в Delphi функции — не замыкания! (см. пример ниже)

    Есть мысль, что это не замыкания потому, что переменная x, которую захватывает функция addX живет только тогда, когда живет процедура Main(я слабо знаю Delphi и с паскалем последний раз имел дело почти десять лет назад, но что-то мне подсказывает, что x находится на стеке и с него убирается при выходе из процедуры). Что будет если функция addX будет возвращаться из другой функции? Смысл замыканий как раз в том, что захваченные значения/переменные сохраняются пока жив функциональный объект, вне зависимости от срока жизни объекта/функции в которых он был создан.

    Вот такой пример на Delphi сможешь повторить?
    #pragma indent
    using System.Console
    
    module Main
        Foo(f : void->int) : void
            WriteLine(f())
    
        Bar() : void->int
            mutable x : int
            def closure() { x++; x }
            WriteLine(closure())
            Foo(closure)
            WriteLine(x)
            closure
    
        Main() : void
            mutable closure = Bar()
            def foo() { WriteLine(closure()) }
            foo()
            closure = Bar()
            foo()

    Он выводит в консоль 1 2 2 3 1 2 2 3

    Вот тебе еще один примерчик для осознания разницы между Nemerle и Delphi:
    using System.Console;
    using System.Collections.Generic;
    
    module Main
    {
        Strashilka[A,R](dump : A*A*(A->A)->R) : A->(A->((A->A)->R))
        {
            x => y => f => dump(x,y,f)
        }
    
        Main() : void
        {
            def ops = List();
    
            foreach(i in [1..3])
                ops.Add(_ * i);
    
            def dump(x, y, f) { WriteLine($"$x * $y == $(f(x))") }
    
            def data = $[(x,f(1),f) | x in [1..4], f in ops];
            data.Iter(dump);
    
            def xdump = (x,y,f) => $"$x * $y == $(f(x))";
            data.Iter((x,y,f) => WriteLine(Strashilka(xdump)(x)(y)(f)));
        }
    }



    FDS>// Я думаю, надо def addX = add(_, x); ?

    FDS>Да, с этим согласен — это круто, не считая замечания, так как несвязанный параметр, как мне кажется, тут первый, а не второй, как вы написали.
    А это абсолютно неважно первый или второй, особенно в данном случае.

    FDS>Просто скопировал метод и он перестал компилироваться

    Потому что локальная функция(да и вообще функция) это и не метод вовсе, это объект(хотя реальный объект зачастую не создается, у функции все равно семантика объекта), причем вполне конкретного generic типа. ref и out параметры у локальных функций не поддерживаются потому, что generic типы нельзя параметризовать так, чтобы учесть ref или out.

    Может разработчикам компилятора и стоит попытаться найти обходной путь для этой проблемы, но я не думаю что это действительно нужная фича(зачем вообще локальным функциям out и ref параметры, особенно учитывая их возможность замыкаться на внешний контекст). Но исправить сообщение об ошибке определенно стоит.

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

    На Nemerle уже написаны далеко не только элементарные вещи(компилятор Nemerle элементарной вещью трудно назвать). Если что-то "элементарное" сделать не получается стоит задуматься о целесообразности этой "элементарной" вещи. Я довольно много кода уже написал на Nemerle(все таки пару лет назад я впервые попытался его освоить и применить), ни разу не пришло в голову сделать такую вот "элементарную" вещь. Хотя может дело в том, что ref и out параметры я в принципе крайне редко использую.

    FDS>P.S. Можно самый важный вопрос: вы знаете о Nemerle довольно много: это вы исходники разбирали или всё из примеров вывели?

    Исходники компилятора это в первую очередь неплохой пример использования Nemerle, ну и для написания более-менее сложных макросов очень полезно туда заглядывать. Но конечно для изучения именно синтаксиса и всяких экзотических возможностей особую ценность представляют тесты — см.ncc/testsuite/positive. Ну и в конце концов документация на сайте не так уж и плоха, особенно если в ней покопаться.
    Re[22]: Насколько важен синтаксис языка?
    От: Vermicious Knid  
    Дата: 09.09.06 18:00
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS>>>Почему же я до сих пор так и не смог написать даже простую работающую программу на Nemerle. Я уже даже на Scheme стал писать (в процессе спора на форуме), а вот на Nemerle — ну никак, ну не получается!

    Значит не твое это.

    FDS>здесь
    Автор: FDSC
    Дата: 08.09.06
    в рамках этого форума частично обсуждаем.

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

    FDSC>Подожду пока выйдет какая-нибудь нормальная документация...

    А может стоит повнимательнее почитать существующую документацию?
    Re[22]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 09.09.06 18:21
    Оценка: 5 (1)
    Здравствуйте, FDSC, Вы писали:

    FDS>здесь
    Автор: FDSC
    Дата: 08.09.06
    в рамках этого форума частично обсуждаем.

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

    Судя по тому как плаваешь в тех же замыканиях тебе нужно вообще подучить базовые понятия функционального программирования, лучшая книга по моему "Функциональное программировани" Филда и Харрисона
    Re[16]: Насколько важен синтаксис языка?
    От: fmiracle  
    Дата: 09.09.06 19:38
    Оценка: +1
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Странно, когда прямо заявляют, что ничего дельного в том же Lisp нет, поскольку он мало распространён — это не пренебрежение. Когда же указывают на примитивность майнстрима — это, типа, обида и оскорбление. Не находишь, что кто-то где-то ставит всё с ног на голову?


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

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


    ГВ>Вот! Правильно. По критериям, необходимым для выживания компании. Наличие готовых недорогих специалистов — не самый малозначительный из них. Ergo, имеются серьёзные предпосылки выбора майнстрим-языка по критериям, не связанным с адекватностью этого языка задаче.


    Эээ. Что-то тут не то.
    Если использование языка позволяет нанять более дешевых специалистов и решить ту же самую задачу за то же самое время и с тем же качеством — то это огромный плюс для языка! Это вроде должно быть очевидно. Делать иначе — это аналогично изготовлению унитазов из золота. Можно, но совершенно бесполезная трата ресурсов.

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

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

    F>>Вроде я про то и сказал — каждой задаче свое средство — зачем опять пытаться внедрить "элитарный язык написания серебрянных пуль"?

    ГВ>Вот-вот-вот. И ты, фактически, вторишь тем, кто говорит, что раз Lisp не в майнстриме, то его положительные стороны высосаны из пальца.

    Я говорю, что для Лиспа, наверное, есть свои задачи, которые им хорошо решаются. Но нельзя говорить, что он просто лучше "мейнстримных языков". Равно неверно будет утверждать, что он просто хуже.
    Он хуже или лучше в том или ином конкретном случае. Например, в нашей вот компании он будет однозначно хуже — потому что пользы от него при решении наших задач не видно, а переобучать придется всех программистов. Ну и с внедрением у заказчика будет трындец. То есть минусы — видно, плюсы — нет. В каком-то другом случае это может быть совсем не так, и там Лисп будет рулить по полной.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[18]: Насколько важен синтаксис языка?
    От: fmiracle  
    Дата: 09.09.06 19:38
    Оценка: +2
    Здравствуйте, vdimas, Вы писали:

    K>>И осуждение бездумного следования за меньшинством никак не является пропагандой бездумного следования за большинством. И наоборот.

    K>>Это доступно?

    V>Является, к сожалению. У характеристики "меньшинство/большинство" всего 2 значения.


    Мдя.
    Да хоть одно.

    Если некто осуждает бездумное следование за меньшинством, это еще не значит, что он призывает бездумно следовать за большинством. Он может, например, призывать воспользоваться своей головой и самому решить, куда двигаться...
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[14]: Насколько важен синтаксис языка?
    От: fmiracle  
    Дата: 09.09.06 19:38
    Оценка: +2
    Здравствуйте, Геннадий Васильев, Вы писали:

    VD>>Ой, а можно ссылку на эту цитату?


    ГВ>Запросто. Re[10]: ООП &mdash; перспективы
    Автор: IT
    Дата: 20.06.06


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

    Бездумное следование что за большинством, что за меньшинством — одна и та же фигня по сути и явно требует меньше мыслительных усилий, нежели движение в ту сторону, в которую тебе действительно требуется (и не важно, с кем твое направление совпадает).
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[18]: Насколько важен синтаксис языка?
    От: fmiracle  
    Дата: 09.09.06 19:38
    Оценка: +2
    Здравствуйте, Геннадий Васильев, Вы писали:

    K>И осуждение бездумного следования за меньшинством никак не является пропагандой бездумного следования за большинством. И наоборот.

    K>Это доступно?

    ГВ>Доступно. Но осуждение "бездумного следования вообще" не должно сопровождается указанием качеств какой-либо группы "за которой следуют". В данном случае
    Автор: IT
    Дата: 20.06.06
    , однако, группа была указана и коррекций не последовало.


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

    Ну типа, как если сказать, что "все автомобили с бензиновым двигателем загрязняют воздух" — это одно. Оно корректно.
    А если сказать — "ВАЗ 21099 — отличная машина для выезда на природу, а Opel Astra — загрязняет воздух" — то это — некорректно. Хотя при этом — абсолютно истинно. Данное высказывание никак не отрицает, что 21099 так же загрязняет воздух, просто про это умалчивается, а на Астре — акцентируется.
    Вот один в один случай с той беседой Андрея Коростелева и IT. Так что зря ты это вытащил. Андрея (возможно невольно) применил прием демагогии, а IT ему на это указал.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[15]: Насколько важен синтаксис языка?
    От: fmiracle  
    Дата: 09.09.06 19:44
    Оценка:
    Здравствуйте, fmiracle, Вы писали:

    F>Так почему тебя повергает в шок, что следование за меньшинством требует сколько-то больших усилий?


    Имелось в виду не требует
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[19]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 09.09.06 19:51
    Оценка: 1 (1) :)))
    Здравствуйте, fmiracle, Вы писали:

    F>Вот один в один случай с той беседой Андрея Коростелева и IT. Так что зря ты это вытащил. Андрея (возможно невольно) применил прием демагогии, а IT ему на это указал.


    Спастбо, друг! Ты вернул мне веру в людей. Всё таки ещё есть на свете разумные люди, которые способны разглядеть где стёб, а где нет.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[2]: Кстати
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 09.09.06 23:11
    Оценка: :))) :)))
    Здравствуйте, McSeem2, Вы писали:

    VD>>>Задумывался. Когда ты к нему прибегал.

    ГВ>>Ну так почему же этот приём считается некорректным?
    ГВ>>[/q]

    MS>Знаешь, Геннадий, а просто потому, что он здесь — главный. Я ни в коем случае не признаю его правоту, но понимаешь ли в чем дело — кто создал эху, тот и хозяин в ней. Так исторически сложилось и поддеживается на RSDN. И это правильно, как бы ты к этому ни относился. И ты должен это учитывать, несмотря на всякие "преведы" уважаемого Влада (извини, Влад, но слово "отвичаю" я приравниваю к слову "превед" в твоей лексике — пожалуйста, избегай впредь падонковщины, иначе я буду причислять тебя к неуважаемым мною падонкам). Такие дела.


    Хм. Вроде бы форум называется не "в гостях у VladD2".
    << Под музыку: ERA — Devore Amante >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[19]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 09.09.06 23:11
    Оценка: -1
    Здравствуйте, fmiracle, Вы писали:

    K>>И осуждение бездумного следования за меньшинством никак не является пропагандой бездумного следования за большинством. И наоборот.

    K>>Это доступно?

    ГВ>>Доступно. Но осуждение "бездумного следования вообще" не должно сопровождается указанием качеств какой-либо группы "за которой следуют". В данном случае
    Автор: IT
    Дата: 20.06.06
    , однако, группа была указана и коррекций не последовало.


    F>Вообще-то это высказываение как раз и было коррекцией — оно отлично дополняло высказывание предыдущего оратора, что "следование за большинством в наименьшей мере требует работы мозга", и как раз приводило систему в баланс — получая именно ситуацию "бездумного следования за кем-либо вообще".


    Какая ещё, сто тысяч микробайт в шлейф, система?! Следовать "общепринятым" терминам в противовес правильных — как раз показатель бездумности. В таком контексте упоминание меньшинства в негативном смысле как раз указывает на то, что надо следовать за большинством, даже если оно поставило всё с ног на голову.

    F>Предыдущий оратор из этого высказывания взял только часть. Это называется — некорректное уточнение.


    Не-а. АК всё совершенно правильно сказал. Именно большинство, именно бездумное следование и именно размахивание "общепринятым" как показатель этой самой бездумности.

    [skip неудачную аналогию]

    F>Вот один в один случай с той беседой Андрея Коростелева и IT. Так что зря ты это вытащил. Андрея (возможно невольно) применил прием демагогии, а IT ему на это указал.


    Я понял в чём прикол. Не надо додумывать за автора, что он собирался сказать, что он мог сказать, что он подумал и что мог бы подумать, но сразу не собразил. Вот что было сказано, то и стало объектом обсуждения.
    << Под музыку: ERA — Devore Amante >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[29]: А как оно в Nemerle?
    От: Сергей Туленцев Россия http://software.tulentsev.com
    Дата: 09.09.06 23:32
    Оценка:
    Здравствуйте, Beam, Вы писали:


    B>Допустим есть у нас такой макрос. Что произойдет если использовать его так:

    B>
    B>ExecuteReaderLoop ("SELECT firstname, lastname FROM employee WHERE firstname = $myparm", dbcon,
    B>{
    B>  System.Console.WriteLine ("Name: {0} {1}", firstname, lastname);
    B>    return;
    B>});
    B>


    B>Я добавил слово return. Очевидно, что измененный код будет подставлен в макрос и, как следствие, весь макрос не будет выполнен до конца. А значить функциональность программы будет нарушена (не будет освобождены ресурсы). Судя по Вашим словам теперь Вы откажетесь от использования макросов в Nemerle, т.к. "их использование может быть небезопасно". Или у Вас имеются какие-то правила, позволяющие избегать данных проблем?


    Нет, не совсем так. Если ты имел в виду, что прервется выполнение макроса — это не соответствует действительности
    Макрос выполняется на этапе компиляции, и этот return (которым, кстати, по умолчанию нельзя воспользоваться) для макроса — просто узел AST.

    Если же ты имел в виду, что прервется выполнение "развернутого" кода до освобождения ресурсов — то, таки, да. Но это небольшая недоработка в макросе. Всего-то надо завернуть объекты DbCommand и DbDataReader в юзинг.

    Так что в данном конкретном случае у Nemerle нет проблем.
    --
    Re[28]: Насколько важен синтаксис языка?
    От: Сергей Туленцев Россия http://software.tulentsev.com
    Дата: 09.09.06 23:48
    Оценка:
    Здравствуйте, VladD2, Вы писали:

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


    ГВ>>С равным (совершенно равным!) успехом можно пульнуть исключение из любого метода в языке, подобном C++. Например, так:


    VD>Исключение на то и исключение, что после него программа уже работать не будет. Его или поймает обработчик, или вываится окошко. А вот передача управления никем поймана не будет. Это будет просто неверная работа программы. И понять, что ошибка произошла из-за неверной передачи уже будет очень не просто.


    Исключения исключениям рознь. В джаве и дотнете при вылете исключения редко когда можно сделать что-то осмысленное. Но на них свет не сошелся.
    --
    Re[20]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 10.09.06 00:11
    Оценка:
    Здравствуйте, IT, Вы писали:

    F>>Вот один в один случай с той беседой Андрея Коростелева и IT. Так что зря ты это вытащил. Андрея (возможно невольно) применил прием демагогии, а IT ему на это указал.

    IT>Спастбо, друг! Ты вернул мне веру в людей. Всё таки ещё есть на свете разумные люди, которые способны разглядеть где стёб, а где нет.

    А если бы ты так сильно не шифровался, то и не было бы недоразумений.
    << Под музыку: ERA — Devore Amante >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[15]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 10.09.06 00:11
    Оценка:
    Здравствуйте, fmiracle, Вы писали:

    ГВ>>Запросто. Re[10]: ООП &mdash; перспективы
    Автор: IT
    Дата: 20.06.06

    F>Нашел что процитировать. Первое утверждение при этом ты считаешь нормальным? Ну, что при следовании за большинством работа мозга нужна по-минимуму?

    Да, ибо так оно и есть.

    F>Так почему тебя повергает в шок, что следование за меньшинством требует сколько-то больших усилий?


    Потому что сказано это было во вполне определённом контексте.

    F>Бездумное следование что за большинством, что за меньшинством — одна и та же фигня по сути и явно требует меньше мыслительных усилий, нежели движение в ту сторону, в которую тебе действительно требуется (и не важно, с кем твое направление совпадает).


    +1
    << Под музыку: ERA — Devore Amante >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[29]: Насколько важен синтаксис языка?
    От: RustM Россия  
    Дата: 10.09.06 00:15
    Оценка:
    Здравствуйте, Сергей Туленцев, Вы писали:

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


    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    Re[4]: Дополнение
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 10.09.06 01:12
    Оценка: :)
    Здравствуйте, VladD2, Вы писали:

    ГВ>>Правильно. Пытаться определить ценность высказываний по количеству того, что человек ранее сделал — неверна by design. Тут много всего сразу примешивается: от апелляций к личности до аргументации опытом.

    VD>Ген, ты бы хоть что-то по какму-нибудь делу сказал. Твои упражнения в софистики уже приелись.

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

    VD>Это говно тебя же и оскорбляло, а ты его защищаешь только чтобы с кем-то поспорить. Ты просто подумай о маразме ситуации!


    1. Он (или Kolhoz? подозреваю, что это один и тот же человек) высказал очень верную мысль: програмирование — занятие не для всех и нечего на этих самых "всех" равняться. Мне это чертовски нравится.

    2. По теме он тоже совершенно прав, ИМХО, для хорошего программиста синтаксис сам по себе большим ограничением не является. Это ммм... by design. Семантика важнее.

    3. Если ты думаешь, что я буду кидаться на каждого, кто скажет "C++ — отстой", то ты очень неправильно думаешь.

    VD>Мы тут с IT во всю колбасим на языке котрый Lisp за предка считает и пытаемся оградить общество от хмаов, а ты оправдываешь былдогея который тебя же (мэйнстрим-С++-программиста) с дерьмом сравнивает. Тебе не странно?


    Раньше ты уговаривал "преодолеть фобии" и что-то там с сознанием сотворить. В этом сезоне уговариваешь присоединиться к мэйнстриму?
    << Под музыку: ERA — Devore Amante >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[21]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 02:44
    Оценка: 15 (1)
    Здравствуйте, FDSC, Вы писали:

    FDS>По C# есть? Можно ссылку? Интересно посмотреть... (если не трудно, конечно)

    FDS>Да, я не часто туда захожу.

    Ссылки не храню. А так искать в лом.

    FDS>По поводу ответов и вопросов — они действительно интересные, не спорю, но, скажем, конкретно по C# у меня ещё не возникало ни одного вопроса, на который бы мне нужно было обращаться в форум: это огромный плюс для этого языка в моих глазах (и в форуме не видел такого, что бы вообще нельзя было понять самостоятельно).


    Все можно понять самостоятельно. То что ты в большинстве случае можешь решить проблемы сам, то скорее твое достоинство нежели Шарпа.

    Что касается вопросов, то там бывает что задают вопросы люди которые пишут парсеры того самого Шарпа (работники ДжетБрэйнс, те что РеШарпер пишут). И не думаю, что они задают вопросы только потому что сами тупы. Все же в огромном количестве мнений всегда найдется то что стоит узнать.

    FDS> А по Nemerle у меня уже десяток вопросов (на которые я сам не знаю ответа), которые возникли просто после написания простейших функций.


    Ну, вот у меня и с Немерле вопросов обычно не возникает. Я чаще удивляюсь тому, что я только подумал что было бы здорово сделать так-то, а оно уже сделано.

    FDS> [я бы сказал, что на уровне простейших функций Scheme гораздо легче для изучения, чем Nemerle ]


    Я бы не скалал бы. Для императивного программиста Немерле в сто раз ближе. Просто новое всегда кажется более сложным.

    FDS>Хм, может я и не вчитывался (кое-где честно говоря действительно по диагонали), но этот раздел я раза три или четыре прочитал (включая файлы на самом сайте), и вот ну не вижу отличий: чем в Delphi функции — не замыкания! (см. пример ниже)


    Вот это и есть момент ктода ты думаешь (иточнее видишь) императивно. Тут нужно изменить сознание. А это не просто.

    Надо осознать что такое замыкание. (оно, кстати, есть и в анонимных методах C# с которым у тебя проблем нет). Так же нужно осознать что функция может быть значением (не тлько в события помещатсья, но и просто тупо в массив класться, передаваться и комбинироваться с другим функциями).

    Как только ты это поймешь, ты поймешь и то что Дельфи это даже на породию не катит. Это просто прошлый век.

    FDS>Но чем Delphi в данном случае уступает [кроме отсутствия type inference]?


    В том что функции не могут быть замыканиями. В том что они не могут быть объявлены внутри выражений. В том что их нельзя возвратить куда угодно. В том что их нельзя комбинировать.

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

    FDS>Выводит в консоль число "7", так же как и ваш пример.


    Тут как минимум стоит сравнить объем и понятность кода. Если код меньше и проще, то это уже приемущество. Но это еще простой случай. В более сложном разница будет еще более очевидна.

    В C# же где все просто вообще нет локальных фукнций.

    VD>>
    VD>>def addX = add(x, _);
    FDS>// Я думаю, надо def addX = add(_, x); ?
    
    Без разницы. Сложение не позволят переставлять параметры.
    
    FDS>Да, с этим согласен - это круто, не считая замечания, так как несвязанный параметр, как мне кажется, тут первый, а не второй, как вы написали. Но это, собственно, уже не к локальным функциям относится, а к созданию новых функций из старых.
    
    Это не круто. Это то что должно быть. А теперь переходим к более интересным вещам.
    
    Часто бывает нужно передать некой универсальной фукнции кусок кода который ее специализует.
    
    Например, у нас есть списко и мы хотим найти в нем некое значение. Как ты это сделаешь на Дельфи? Цикл? Сколько строк это займет? А как будет читаться?
    
    В Немерле можно просто создать лямбу (ананимную фукнцию).
    
    Вот, например, как можно найти значение в списке:
    [c#]
    def result = users.Filter(user => user.Name == "Вася");


    Вот рельный код написанный мной пару дней назад:
    /// Remove extension methods defined in code (not external).
    public RemoveInternalExtensionMethods() : void
    {
        foreach ((name, lst) when lst.Exists(_ is MethodBuilder) in _extension_methods.KeyValuePairs)
        {
            def newList = lst.RevFilter (x => !(x is MethodBuilder));
    
            if (newList is [])
                _ = _extension_methods.Remove (name);
            else
                _extension_methods[name] = newList;
        }
    }

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

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

    FDS>(пожалуй первый раз в жизни у меня т а к и е проблемы с синктасисом )

    Это после Схемы то?

    FDS>Некомпилируется:

    FDS>
    FDS>...
    FDS>class C
    FDS>{
    FDS>    public static Method(i : ref int) : int
    FDS>    {
    FDS>        i = i + 1;
    FDS>        i
    FDS>    }
    FDS>}
    
    FDS>def MM(i : ref int) : int
    FDS>{
    FDS>    i = i + 1;
    FDS>    i
    FDS>}
    
    FDS>mutable x = 5;
    
    FDS>WriteLine(C.Method(ref x));
    FDS>WriteLine(MM(ref x));
    FDS>_ = ReadLine();
    
    FDS>


    FDS>Ошибки:...


    Похоже баг.

    FDS>Что я должен думать о вменяемости компилятора? Естественно у меня чисто познавательные вопросы: потому что язык мне всё-таки интересен для практических целей.


    Откровенно говоря ref/out параметры в этом языке используются не часто и уж точно без таких наворотов. Видимо что-то не учли.

    Зато ты моещь возвращать множественные значения из фукнции. Это намного добнее.

    FDS>P.S. Можно самый важный вопрос: вы знаете о Nemerle довольно много: это вы исходники разбирали или всё из примеров вывели?


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

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

    Код компилятора вообще уникален. Это супер хай-тэк заключенный в обалденно малый объем исходников. Исходники компилятора 1.5 метра. А сложность превышает все что я видел. Немерле очень выразителен. Особенно если нужно описывать иерархически и дургие констуркции.

    FDS>Вообще, там есть в исходниках какой-нибудь отдельный файл описания синтаксиса (вкл. макросы)?


    ЕБНФ есть на сайте. А код компилятора это куча сложного кода. Декларатвно там только АСТ описан.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[28]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 10.09.06 05:08
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS>Потому что такой пример. Хороший программист с предприимчивостью — это редкость.


    То есть он должен сидеть сиднем и делать только то, что ему скажут? Странные у тебя представления о хорошем программисте
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[15]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 10.09.06 05:08
    Оценка: :)
    Здравствуйте, vdimas, Вы писали:

    V>Re[9]: Насколько важен синтаксис языка?
    Автор: vdimas
    Дата: 07.09.06


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

    V>Если же вопрос по существу, т.е. тебе важен ответ — то он таков: уверен. В любом случае без личной встречи качественно пободаться не получиться, а заочно у меня есть некие субъективные основания так предполагать.


    Просто удивительно, но количество желающих применить ко мне аргументацию с позиций физической силы резко уменьшилось до нуля после года занятий в "качалке".
    Как ты думаешь, в чем тут может быть дело?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[9]: Дополнение
    От: Дарней Россия  
    Дата: 10.09.06 05:08
    Оценка: -2
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Глупость это была бы несусветная.


    с чего это вдруг? Тебе составляет какие-то проблемы привести список выполненных тобой работ? И мы со Владом сразу отправимся посыпать голову пеплом и сгорать от стыда.

    ГВ>Ты перечитай ветку, а то, сдаётся мне, что ты путаешь, кто к кому обращается и кто что почему сказал.


    тебе много чего сдается, но почему-то все время не по делу.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[22]: Оффтопик: Nemerle
    От: Vermicious Knid  
    Дата: 10.09.06 05:36
    Оценка: 11 (2)
    Здравствуйте, VladD2, Вы писали:

    VD>Я бы не скалал бы. Для императивного программиста Немерле в сто раз ближе. Просто новое всегда кажется более сложным.

    Я бы сказал, что для императивного программиста уже хорошо знакомого как минимум с C# 2.0 и C++.

    VD>Похоже баг.

    Это не баг. Мне кажется это by design, просто с невнятным сообщением об ошибке. Объявление локальных функций предусматривает создание нового класса(исключением могут являться лишь локальные функции устраненные оптимизатором), наследника от одного из generic абстракных классов Nemerle.Internal.Function или Nemerle.Internal.FunctionVoid. Абстрактные методы apply у обоих этих абстрактных классов четко определены, а типами с модификаторами ref и out параметризовать generic классы нельзя. О чем компилятор и сообщает, так как он тупо пытается подставить ref int в параметры класса Nemerle.Internal.Function при создании класса для этой локальной функции.

    Т.е. для локальной функции он пытается создать примерно такой класс:
    class __Some_Mangled_Name_ : Nemerle.Internal.Function[ref int,int]
    {
        public apply(x : ref int) : int
        {
            // ....
        }
    }

    И это у него конечно не выходит, о чем он и пытается сообщить. Если бы локальные функции нельзя было передавать в другие функции, то эта проблема элементарно бы решалась. А так в любом случае невозможно сообщить принимающей стороне о том, что какой-то из параметров является ref или out параметром. В этом смысле функции в Nemerle хуже делегатов, хотя к счастью делегаты Nemerle вроде тоже поддерживает.
    Re[12]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 10.09.06 05:41
    Оценка: 33 (3) +2 :)
    Здравствуйте, Геннадий Васильев, Вы писали:

    Про следование большинству можно твердо сказать, что это приведет к результату не хуже среднего по рынку — и это не так уж и плохо.
    А меньшинств много, очень много. Некоторые из них и правда идут к зарытому кладу, но у большинства (процентов так 99,9) их путь ведет просто на поле дураков.

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

    Я конечно могу понять, что эта точка зрения очень притягательна для людей определенного склада ума, и посамоутверждаться за счет высказываний "все в мэйнстриме глупые, а я не в мэйнстриме и поэтому умный" — самый простой способ поднять свою самооценку. Но кажется мне, что наличие таких высказываний говорит о прямо противоположном уровне интеллекта.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[22]: Оффтопик: Nemerle
    От: IT Россия linq2db.com
    Дата: 10.09.06 05:53
    Оценка: 8 (2) +1
    Здравствуйте, VladD2, Вы писали:

    VD>Код компилятора вообще уникален. Это супер хай-тэк заключенный в обалденно малый объем исходников. Исходники компилятора 1.5 метра. А сложность превышает все что я видел. Немерле очень выразителен. Особенно если нужно описывать иерархически и дургие констуркции.


    Кстати, по поводу малого объёма исходников компилятора. Вообще-то, к таким заявлениям я всегда отношусь скептически. Ничего из ничего не получается. Не бывает так, что если компилятор — это довольно сложный автомат, то в нём мало логики. Ну не бывает так. А если логики много, то как кода может быть мало? Куда он мог подеваться.

    Оказалось, что так оно и есть, логики в компиляторе много, а кода действительно мало. Разработчикам удалось её упаковать в pattern matching и варианты (алгебраические типы).

    Пример.

    Распаршенные выражения в компиляторе представляются классом PExpr примерно такой структуры:

    public variant PExpr
    {
      | Array       { rank : PExpr; args : PExpr; }
      | Literal     { val  : Literal; }
      | ListLiteral { elements : list [PExpr]; }
      // ...
    }
    
    public variant Literal
    {
      | Void
      | Integer { val : ulong; is_negative : bool; mutable treat_as : MType.Class; }
      // ...
    }

    Опции варианта реализуются как сабклассы варианта. Т.е аналогичная запись на C# была бы такая:

    public class PExpr
    {
      public class Array : PExpr
      {
        public PExpr rank;
        public PExpr args;
      }
    
      public class Literal : PExpr
      {
        public Literal val;
      }
    
      public class ListLiteral : PExpr
      {
        public list<PExpr> elements;
      }
    
      // ...
    }
    
    public class Literal
    {
      public class Void : Literal
      {
      }
    
      public class Integer : Literal
      {
        public ulong       val;
        public bool        is_negative;
        public MType.Class treat_as;
      }
    
      // ...
    }

    Т.е. уже здесь видна компакность записи подобных структур данных. Но это всё оказалось цветочки, по сравнению с обработкой этих данных. Вот кусочек компилятора:

    match (expression)
    {
      // ...
        
      | Array(Literal(Integer(r, false, _)), ListLiteral([])) =>
        // ...
    
      // ...
    }

    Если преобразовать этот код в C#, то мы получим примерно следующее (я попытаюсь записать в один if):

      // ...
    
      else if (
        expression is PExpr.Array &&
        ((PExpr.Array)expression).rank is PExpr.Literal &&
        ((PExpr.Literal)((PExpr.Array)expression).rank).val is Literal.Integer &&
        ((Literal.Integer)((PExpr.Literal)((PExpr.Array)expression).rank).val).is_negative == false &&
        ((PExpr.Array)expression).args is PExpr.ListLiteral &&
        ((PExpr.ListLiteral)((PExpr.Array)expression).args).elements.Count == 0
      {
        ulong r = ((Literal.Integer)((PExpr.Literal)((PExpr.Array)expression).rank).val).val;
    
        // ...
      }
    
      // ...

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

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

    Как любил поговаривать мой первый шеф — качество/сложность чего-либо не может превышать на порядок качества/сложности инструмента, с помощью которого оно сделано.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[16]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 10.09.06 06:36
    Оценка: :)))
    Здравствуйте, Дарней, Вы писали:


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

    Д>Как ты думаешь, в чем тут может быть дело?

    Надо будет с тобой поосторожнее беседовать, все таки целый год занятий да еще в качалке (хотя надеюсь что в кресле качалке), меня аж пот холодный прошиб
    Re[17]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 10.09.06 06:44
    Оценка: +2
    Здравствуйте, fmiracle, Вы писали:


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


    Это неверное утверждение. Такие инструменты просто для некторого класса задач нивелируют уровень программистов. Но очень часто ничем ни помогают или даже мешают более сильному решать нетипичные задачи.
    Re[16]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 10.09.06 08:50
    Оценка: +3 :))) :))) :)
    Здравствуйте, Дарней, Вы писали:

    V>>Если же вопрос по существу, т.е. тебе важен ответ — то он таков: уверен. В любом случае без личной встречи качественно пободаться не получиться, а заочно у меня есть некие субъективные основания так предполагать.


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


    Докатились. Раньше была только виртуальная пенисометрия на тему "да я напрограммировал в три раза больше, чем ты!". Теперь мы переходим к виртуальной бицепсометрии. Следующим шагом, надо полагать, будет соревнование в виртуальном разбивании кирпичей, черепиц и досок. А затем в количестве выртуально сделанных харакири.

    Или может сразу, как в детском саду: А вот придет мой старший брат! Да что твой старший брат сможет сделать с моим старшим братом!? Ах так, ах так -- тогда я папу позову.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[23]: Оффтопик: Nemerle
    От: Gaperton http://gaperton.livejournal.com
    Дата: 10.09.06 09:12
    Оценка: -1
    Здравствуйте, IT, Вы писали:

    IT>Желающие могут переписать это на свой лад и даже поприменять разные паттерны, но боюсь что более компактного кода, чем на Nemerle не получится.


    О сколько нам открытий чудных. Оказывается — это паттерн-матчинг с алгебраическми типами, дернутыми из ML нам так помог, а не макросы. Ты меня разочаровываешь. А я думал — что мэйнстрим у нас самое лучшее.
    Re[29]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 10.09.06 10:49
    Оценка:
    Здравствуйте, Дарней, Вы писали:

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


    FDS>>Потому что такой пример. Хороший программист с предприимчивостью — это редкость.


    Д>То есть он должен сидеть сиднем и делать только то, что ему скажут? Странные у тебя представления о хорошем программисте


    Нет, он может быть даже хорошим руководителем и чем-то там ещё, но плохим бизнесменом. Проще говоря, ему нужен партнёр, что бы нормально реализовать свои замыслы в бизнесе.
    Re[23]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 10.09.06 10:53
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

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


    FDS>>>>Почему же я до сих пор так и не смог написать даже простую работающую программу на Nemerle. Я уже даже на Scheme стал писать (в процессе спора на форуме), а вот на Nemerle — ну никак, ну не получается!

    VK>Значит не твое это.

    FDS>>здесь
    Автор: FDSC
    Дата: 08.09.06
    в рамках этого форума частично обсуждаем.

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

    FDSC>>Подожду пока выйдет какая-нибудь нормальная документация...

    VK>А может стоит повнимательнее почитать существующую документацию?

    Ага, на C# я начал программировать вообще ничего не читая и когда я что-то в нём не знаю, обычно оказывается, что это что-то сделано так, как я думаю, а не как-то по другому. Сколько можно читать документацию, в которой, к тому же, некоторые примеры раза по три повторяются...
    Re[23]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 10.09.06 10:55
    Оценка:
    Здравствуйте, FR, Вы писали:

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


    FDS>>здесь
    Автор: FDSC
    Дата: 08.09.06
    в рамках этого форума частично обсуждаем.

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

    FR>Судя по тому как плаваешь в тех же замыканиях тебе нужно вообще подучить базовые понятия функционального программирования, лучшая книга по моему "Функциональное программировани" Филда и Харрисона


    Вы правы, уже подумал на эту тему. Спасибо за совет.
    Re[23]: Оффтопик: Nemerle
    От: FDSC Россия consp11.github.io блог
    Дата: 10.09.06 11:38
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

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


    VD>>Я бы не скалал бы. Для императивного программиста Немерле в сто раз ближе. Просто новое всегда кажется более сложным.

    VK>Я бы сказал, что для императивного программиста уже хорошо знакомого как минимум с C# 2.0 и C++.

    Интересно, причём здесь C++? Да ешё и "хорошее знание" C++? Вы не могли бы объяснить подробнее, что вы имели ввиду.


    VD>>Похоже баг.

    VK>Это не баг. Мне кажется это by design, просто с невнятным сообщением об ошибке.

    Честно говоря, я вообще не понимаю, зачем в Nemrle введены ref и out параметры, тем более, что они создают некоторую нелогичность в строении языка. Помнится, когда я пытался разработать сам некоторое подобие языка программирования как-то сразу получилось, что ref параметров просто нет (есть только in и out), исключая изменения состояний спец. объектов (у меня там ещё много чего не было, помню как два дня пытался написать на нём сортировку пузырьком — намучился ).
    Re[17]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 10.09.06 11:57
    Оценка:
    Здравствуйте, eao197, Вы писали:

    правильно говоришь. вот и я тоже думаю, что вообще не надо было начинать на ту тему. ну раз уж начали — мне приходится адекватно отвечать
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[30]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 10.09.06 11:59
    Оценка:
    Здравствуйте, FDSC, Вы писали:

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


    как правило, замыслы рушатся задолго до возникновения необходимости в таком партнере
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[24]: Оффтопик: Nemerle
    От: FR  
    Дата: 10.09.06 12:03
    Оценка:
    Здравствуйте, FDSC, Вы писали:

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


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


    VD>>>Я бы не скалал бы. Для императивного программиста Немерле в сто раз ближе. Просто новое всегда кажется более сложным.

    VK>>Я бы сказал, что для императивного программиста уже хорошо знакомого как минимум с C# 2.0 и C++.

    FDS>Интересно, причём здесь C++? Да ешё и "хорошее знание" C++? Вы не могли бы объяснить подробнее, что вы имели ввиду.


    Программирование на шаблонах C++ по сути функциональщина, поэтому те кто хорошо разбираются с шаблонами, обычно легко обучаются и функциональному программированию.
    Re[21]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 10.09.06 12:23
    Оценка:
    Здравствуйте, IT, Вы писали:

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


    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[31]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 10.09.06 12:31
    Оценка:
    Здравствуйте, Дарней, Вы писали:

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


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


    Д>как правило, замыслы рушатся задолго до возникновения необходимости в таком партнере


    Поэтому он и нужен — что б замыслы были подходящие
    Re[32]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 10.09.06 12:52
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS>Поэтому он и нужен — что б замыслы были подходящие


    а свои не подходят?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[33]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 10.09.06 12:57
    Оценка:
    Здравствуйте, Дарней, Вы писали:

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


    FDS>>Поэтому он и нужен — что б замыслы были подходящие


    Д>а свои не подходят?


    Да нет. Я про то, что у них замыслы бывают немного не для бизнеса, а знающий человек их может классно адаптировать. Для этого нужна прежде всего предприимчивость. Ну и потом, этот бизнесмен будет подталкивать и морально поддерживать программиста.
    Re[34]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 10.09.06 13:27
    Оценка:
    Здравствуйте, FDSC, Вы писали:

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


    Под "предприимчивостью" обычно понимают совсем не то, что ты имеешь в виду. Его синоним — инициативность.

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


    это всё полезно, но не обязательно
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[35]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 10.09.06 13:35
    Оценка:
    Здравствуйте, Дарней, Вы писали:

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


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


    Д>Под "предприимчивостью" обычно понимают совсем не то, что ты имеешь в виду. Его синоним — инициативность.


    Инициативность в области продвижения товара. И всё. А у программиста инициативность в области программирования. Чувствуешь разницу?
    Re[36]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 10.09.06 13:46
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS>Инициативность в области продвижения товара. И всё. А у программиста инициативность в области программирования. Чувствуешь разницу?


    Да, навык полезный. Но чтобы продвигать товар, нужно для начала чтобы он был. Если товара (или идеи) нет — то и обсуждать нечего.
    Бывают конечно гении от маркетологии, которые ухитряются продать шкуру неубитого медведя (который к тому же находится в противоположном земном полушарии, за оградой из колючей проволоки и под охраной), но это уже вырожденный случай.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[2]: Кстати
    От: squiz  
    Дата: 10.09.06 14:39
    Оценка: +2
    Здравствуйте, McSeem2, Вы писали:
    MS>И ты должен это учитывать, несмотря на всякие "преведы" уважаемого Влада (извини, Влад, но слово "отвичаю" я приравниваю к слову "превед" в твоей лексике — пожалуйста, избегай впредь падонковщины, иначе я буду причислять тебя к неуважаемым мною падонкам). Такие дела.

    Никогда не замечал за ним падонковского языка. Он просто много пишет и быстро а посему много опечаток
    Never underestimate those behind you...
    Re[23]: Оффтопик: Nemerle
    От: squiz  
    Дата: 10.09.06 14:39
    Оценка:
    Здравствуйте, IT, Вы писали:
    IT>Кстати, по поводу малого объёма исходников компилятора.

    Кстати, по поводу компилятора: это только у меня так что hello.n собирается 3-4 сек. ? На той же машине 1.2M солюшн ребилдится за макс 1 сек. полностью...
    Never underestimate those behind you...
    Re[24]: Оффтопик: Nemerle: быстрота сборки
    От: FDSC Россия consp11.github.io блог
    Дата: 10.09.06 14:51
    Оценка:
    Здравствуйте, squiz, Вы писали:

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

    IT>>Кстати, по поводу малого объёма исходников компилятора.

    S>Кстати, по поводу компилятора: это только у меня так что hello.n собирается 3-4 сек. ? На той же машине 1.2M солюшн ребилдится за макс 1 сек. полностью...


    У меня компилиться секунд за 6
    Re[37]: Насколько важен синтаксис языка?
    От: FDSC Россия consp11.github.io блог
    Дата: 10.09.06 14:53
    Оценка:
    Здравствуйте, Дарней, Вы писали:

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


    FDS>>Инициативность в области продвижения товара. И всё. А у программиста инициативность в области программирования. Чувствуешь разницу?


    Д>Да, навык полезный. Но чтобы продвигать товар, нужно для начала чтобы он был. Если товара (или идеи) нет — то и обсуждать нечего.

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

    Прежде чем его продавать, надо знать, что будут покупать. Проще говоря:
    1. У программиста гениальная идея (но никто её не будет покупать)
    2. "Блин, какую ты фигню придумал, давай лучше из твоей идеи сделаем .."
    3. Программист работает
    4. Предприимчивый человек продаёт
    Re[30]: А как оно в Nemerle?
    От: Beam Россия  
    Дата: 10.09.06 15:05
    Оценка:
    Здравствуйте, Сергей Туленцев, Вы писали:

    СТ>Нет, не совсем так. Если ты имел в виду, что прервется выполнение макроса — это не соответствует действительности

    СТ>Макрос выполняется на этапе компиляции, и этот return (которым, кстати, по умолчанию нельзя воспользоваться) для макроса — просто узел AST.

    Да, мне известно как работают макросы.

    СТ>Если же ты имел в виду, что прервется выполнение "развернутого" кода до освобождения ресурсов — то, таки, да. Но это небольшая недоработка в макросе.


    Это я и имел ввиду. Но Вы же не будете отрицать возможность возникновения такой проблемы при создании других макросов?!

    СТ>Всего-то надо завернуть объекты DbCommand и DbDataReader в юзинг.


    А это уже частности. В Smalltalk всего-то надо использовать сообщение ensure: (при использовании ресурсов так и делается, мало ли какое исключение выскочит?)

    method: aBlock
        ["используем ресурсы, делаем что-то полезное, в т.ч. вычисляем aBlock"] 
            ensure: ["освобождаем ресурсы - этот код обязательно будет выполнен, даже если в aBlock был возврат"]


    СТ>Так что в данном конкретном случае у Nemerle нет проблем.


    В данном конкретном случае проблема таки есть — макрос-то "прервался". Просто Вы нашли способ освободить ресурсы (обошли проблему). Я же хотел донести другую мысль. При определенных обстоятельствах макросы Nemerle могут вызывать аналогичную проблему, но, думаю, что в подавляющем большинстве случаев обычно не учитывают проблемы такого плана, а всецело полагаются на программиста, который использует эти макросы. И никаких проблем это не вызывает.

    Возьмите тот же макрос "for" в Nemerle (это же макрос?). Если Вы поставите return в теле цикла, то все итерации цикла не будут выполнены. Есть ли в этом макросе какой-либо код для устранения этой проблемы? Нет. Аналогична ситуация и в Smalltalk. Но является ли это вообще проблемой, о которой нужно так много говорить?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[31]: А как оно в Nemerle?
    От: FDSC Россия consp11.github.io блог
    Дата: 10.09.06 15:18
    Оценка: +2
    Здравствуйте, Beam, Вы писали:

    B>Здравствуйте, Сергей Туленцев, Вы писали:


    СТ>>Нет, не совсем так. Если ты имел в виду, что прервется выполнение макроса — это не соответствует действительности

    СТ>>Макрос выполняется на этапе компиляции, и этот return (которым, кстати, по умолчанию нельзя воспользоваться) для макроса — просто узел AST.

    B>Да, мне известно как работают макросы.


    СТ>>Если же ты имел в виду, что прервется выполнение "развернутого" кода до освобождения ресурсов — то, таки, да. Но это небольшая недоработка в макросе.


    B>Это я и имел ввиду. Но Вы же не будете отрицать возможность возникновения такой проблемы при создании других макросов?!


    СТ>>Всего-то надо завернуть объекты DbCommand и DbDataReader в юзинг.


    B>А это уже частности. В Smalltalk всего-то надо использовать сообщение ensure: (при использовании ресурсов так и делается, мало ли какое исключение выскочит?)


    B>
    B>method: aBlock
    B>    ["используем ресурсы, делаем что-то полезное, в т.ч. вычисляем aBlock"] 
    B>        ensure: ["освобождаем ресурсы - этот код обязательно будет выполнен, даже если в aBlock был возврат"]
    B>


    СТ>>Так что в данном конкретном случае у Nemerle нет проблем.


    B>В данном конкретном случае проблема таки есть — макрос-то "прервался". Просто Вы нашли способ освободить ресурсы (обошли проблему). Я же хотел донести другую мысль. При определенных обстоятельствах макросы Nemerle могут вызывать аналогичную проблему, но, думаю, что в подавляющем большинстве случаев обычно не учитывают проблемы такого плана, а всецело полагаются на программиста, который использует эти макросы. И никаких проблем это не вызывает.


    Стоп, стоп. стоп. Ну вам же сказали, что нужно использовать using: если я правильно понял, он аналогичен ensure

    B>Возьмите тот же макрос "for" в Nemerle (это же макрос?).


    Угу.

    B> Если Вы поставите return в теле цикла, то все итерации цикла не будут выполнены. Есть ли в этом макросе какой-либо код для устранения этой проблемы? Нет. Аналогична ситуация и в Smalltalk. Но является ли это вообще проблемой, о которой нужно так много говорить?


    А что, в сишном коде for (int i = 0; i < count; i++) {return;} будут выполнены все итерации? Это стандартное поведение никак нельзя счтитать ошибкой, наоборот, если бы было иначе, то это была бы ошибка
    Re[31]: А как оно в Nemerle?
    От: Сергей Туленцев Россия http://software.tulentsev.com
    Дата: 10.09.06 15:24
    Оценка: :)
    Здравствуйте, Beam, Вы писали:

    СТ>>Если же ты имел в виду, что прервется выполнение "развернутого" кода до освобождения ресурсов — то, таки, да. Но это небольшая недоработка в макросе.


    B>Это я и имел ввиду. Но Вы же не будете отрицать возможность возникновения такой проблемы при создании других макросов?!


    Не буду, это было бы глупо. Но для того и нужна голова, чтобы думать.

    СТ>>Всего-то надо завернуть объекты DbCommand и DbDataReader в юзинг.


    B>А это уже частности. В Smalltalk всего-то надо использовать сообщение ensure: (при использовании ресурсов так и делается, мало ли какое исключение выскочит?)


    А чем этот ensure отличается от using?
    --
    Re[24]: Оффтопик: Nemerle
    От: IT Россия linq2db.com
    Дата: 10.09.06 15:45
    Оценка: 1 (1) +4 :))) :)
    Здравствуйте, Gaperton, Вы писали:

    IT>>Желающие могут переписать это на свой лад и даже поприменять разные паттерны, но боюсь что более компактного кода, чем на Nemerle не получится.


    G>О сколько нам открытий чудных.


    Толи ещё будет

    G>Оказывается — это паттерн-матчинг с алгебраическми типами, дернутыми из ML нам так помог, а не макросы. Ты меня разочаровываешь.


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

    От вас же, просвящённых, только пока и слышно: мы знаем что такое pattern matching, поэтому мы умные. Так вот. Мы будем рассказывать людям что такое pattern matching и как он работает, они тоже будут становиться умными, а вы будете потихоньку превращаться в Неуловимых Джо.

    Хотя, время ещё есть одуматься, засунуть свой сарказм подальше и начать сеять доброе и вечное вместе с нами

    G>А я думал — что мэйнстрим у нас самое лучшее.


    По крайней мере, мэйнстрим к этому стремится, что лично меня не может не радовать. Замыкания у нас уже есть примерно с год, короткая форма лямбды, анонимные типы и вывод типов будет через пол года. В джаве, по рассказам джавистов (за достоверность не ручаюсь), ввели некоторое подобие алгебраических типов. Остался только по большому счёту pattern matching. Каринг фича приятная, но не принципиальная. Что у вас ещё осталось? Да практически больше ничего. А у нас помимо всего вышеперечисленного есть ещё бронепоезд на запасном пути, у которого первая буква названия — это первая буква слова Nemerle
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[10]: Дополнение
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 10.09.06 16:13
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    ГВ>>Глупость это была бы несусветная.

    Д>с чего это вдруг? Тебе составляет какие-то проблемы привести список выполненных тобой работ? И мы со Владом сразу отправимся посыпать голову пеплом и сгорать от стыда.

    Ты хоть разберись толком, к кому обращался Влад.
    << Под музыку: ERA — Jmen Sore >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[13]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 10.09.06 16:13
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>Псевдо-логический вывод "умных меньшинство, я следую за меньшинством — значит, умный", похоже, очень популярен на этом форуме.


    Что-то мне так не показалось. Скорее уж популярно псевдологическое: "кто не следует за большинством, тот совершает глупость". Разницу не чуешь?

    Д>Я конечно могу понять, что эта точка зрения очень притягательна для людей определенного склада ума, и посамоутверждаться за счет высказываний "все в мэйнстриме глупые, а я не в мэйнстриме и поэтому умный" — самый простой способ поднять свою самооценку. Но кажется мне, что наличие таких высказываний говорит о прямо противоположном уровне интеллекта.


    Вот интересный момент. Когда радетели следования за большинством начинают пинать меньшинство (просто в силу количественных показателей), это самоутверждением не считается. В обратной ситуации сразу же крик про "самоутверждение". Как думаешь, в чём тут дело?
    << Под музыку: ERA — Jmen Sore >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[32]: А как оно в Nemerle?
    От: Beam Россия  
    Дата: 10.09.06 17:17
    Оценка:
    Здравствуйте, Сергей Туленцев, Вы писали:

    B>>Это я и имел ввиду. Но Вы же не будете отрицать возможность возникновения такой проблемы при создании других макросов?!


    СТ>Не буду, это было бы глупо. Но для того и нужна голова, чтобы думать.


    Об этом и речь

    СТ>А чем этот ensure отличается от using?


    Ensure — это аналог try-finally в других языках
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[32]: А как оно в Nemerle?
    От: Beam Россия  
    Дата: 10.09.06 17:17
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS>Стоп, стоп. стоп. Ну вам же сказали, что нужно использовать using: если я правильно понял, он аналогичен ensure


    Это было сказано, чтобы показать как решить проблему в конкретном случае. Для того, чтобы показать как в конкретном случае ее можно решить и на Smalltalk я и привел пример кода. Но ведь речь идет про проблему в целом, а не в конкретном случае.

    B>> Если Вы поставите return в теле цикла, то все итерации цикла не будут выполнены. Есть ли в этом макросе какой-либо код для устранения этой проблемы? Нет. Аналогична ситуация и в Smalltalk. Но является ли это вообще проблемой, о которой нужно так много говорить?


    FDS>А что, в сишном коде for (int i = 0; i < count; i++) {return;} будут выполнены все итерации? Это стандартное поведение никак нельзя счтитать ошибкой, наоборот, если бы было иначе, то это была бы ошибка


    А Вы думаете в Smalltalk все наоборот? Пример
    0 to: count-1 do: [:i | "это блок переданн в качестве параметра" ... ]

    Для реализации этого метода все равно: передан блок с возвратом или обычный блок, т.е. никаких проверок нет. И он делает то, что Вы от него ожидаете. Будете передан обычный блок — будут выполнены все итерации цикла, будет передан блок с возвратом (return) — не будут. Ну в чем здесь проблема???

    Вернемся к макросам Nemerle. Пусть у нас есть макрос, с параметром body (код). И пусть этот параметр используется в середине макроса. Т.е. при развертывании макроса получится код:

        // выполняем какой-то код 1
        // здесь будет код $body
        // выполняем какой-то код 2


    Если Вы передадите в этот макрос код, внутри которого есть return , то код 2 выполнен не будет
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[24]: Оффтопик: Nemerle
    От: IT Россия linq2db.com
    Дата: 10.09.06 17:48
    Оценка:
    Здравствуйте, squiz, Вы писали:

    S>Кстати, по поводу компилятора: это только у меня так что hello.n собирается 3-4 сек. ?


    Есть такое дело. Первый раз долго поднимается компилятор. Потом всё значительно быстрее.

    S>На той же машине 1.2M солюшн ребилдится за макс 1 сек. полностью...


    1.2M чего?
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[25]: Оффтопик: Nemerle
    От: Gaperton http://gaperton.livejournal.com
    Дата: 10.09.06 17:58
    Оценка: -3 :)))
    Здравствуйте, IT, Вы писали:

    G>>Оказывается — это паттерн-матчинг с алгебраическми типами, дернутыми из ML нам так помог, а не макросы. Ты меня разочаровываешь.

    IT>От вас же, просвящённых, только пока и слышно: мы знаем что такое pattern matching, поэтому мы умные.
    Ну я понимаю, что некоторые тут чувствуют себя неудобно, когда рядом кто-то шибко умные слова говорит, паттерн-матчинг там или карринг. Прям свербит, хочется в харю очкастым умникам дать, правда? Но ничего, это пройдет.

    IT>Так вот. Мы будем рассказывать людям что такое pattern matching и как он работает, они тоже будут становиться умными, а вы будете потихоньку превращаться в Неуловимых Джо.

    А тебе не приходило в голову, что мы, очкастые умники, чти-нибудь еще умное за это время выучим, пока вы с паттерн-матчингом разбираетесь?

    IT>Хотя, время ещё есть одуматься, засунуть свой сарказм подальше и начать сеять доброе и вечное вместе с нами


    Ой, какой кошмар — не успеем, и поезд уйдет — IT c Владом все-превсе расскажут про паттерн-матчинг, и все в форуме "философия" сразу станут умными, а "мы" останемся в дураках. Ну и напугал ты меня. Времени-то много осталось, до ухода поезда?
    Re[25]: Оффтопик: Nemerle
    От: squiz  
    Дата: 10.09.06 18:48
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Есть такое дело. Первый раз долго поднимается компилятор. Потом всё значительно быстрее.

    Возможно. Я только одиночные файлы собирал.

    IT>1.2M чего?

    Исходников
    Never underestimate those behind you...
    Был такой язык
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 10.09.06 18:50
    Оценка: :)))
    Здравствуйте, VladD2, Вы писали:

    VD>Мы тут с IT во всю колбасим на языке котрый Lisp за предка считает и [...]


    Если мне не изменяет память, то где-то когда-то я уже слышал что-то о наследнике C++. М-м-м-м... Кажется, в названии этого языка был такой значок... как его, а, вот такой: '#', или я его путаю с названием каких-то островов в Тихом океане?
    << Под музыку: ERA — Jmen Sore >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[23]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 20:59
    Оценка: +1
    Здравствуйте, Vermicious Knid, Вы писали:

    VK>Я бы сказал, что для императивного программиста уже хорошо знакомого как минимум с C# 2.0 и C++.


    +1

    VD>>Похоже баг.

    VK>Это не баг. Мне кажется это by design, просто с невнятным сообщением об ошибке.

    Да, уже выяснили. Но такое сообщение об ошибке это и есть баг. Если они сами не поправят, то прицдется самому править. И пусть учат наш русский английский.

    VK> Объявление локальных функций предусматривает создание нового класса


    В принципе тут проблем нет. Ведь переменные внтури метода из которого происходит вызов заменяются на поля класса и проблем с возвратом значений нет. Конечно надо все продумать...

    Вот только по мне так поддерживать ref/out в локальных функциях вообще не стоит. Это будет полдталкивать тех кто раньше писал на Шарпе использовать плохой стиль программирования. Немерле обладает намного более красивыми возможностями, чтобы использовать эти ref/out.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[23]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 20:59
    Оценка: +1
    Здравствуйте, IT, Вы писали:

    IT>Кстати, по поводу малого объёма исходников компилятора. Вообще-то, к таким заявлениям я всегда отношусь скептически. Ничего из ничего не получается. Не бывает так, что если компилятор — это довольно сложный автомат, то в нём мало логики. Ну не бывает так. А если логики много, то как кода может быть мало? Куда он мог подеваться.


    Дык ты путашь две вещи. Объем исходников и объем логики. Обем логики в нем дай бог каждому. А объем исходнико получается меньше из-за более коротких конструкций и сахара. Ну, конечно из-за проектных решений еще. Просто мнокие вещи требующие на чистых ООЯ создания моря классов и соотвествующей инфраструктуры утут заменяется вариантом содержащим все описание в одном месте и очень компактно. Далее распознование этих вариантов выглядит тоже гораздо компактнее. Ведь одно вхождение match-а может заменить целую кучу фифов и свитчей. Код распознователя паттерн-матчинга — это очень не кислый хайтек (см. ncc\typing\DecisionTreeBuilder.n). Далее идут квази-цитирование и макросы. То что описывается на страницу в терминах классов АСТ можно описать очень компактно с помщью квази-цитирования. Макросы позволяют устранить дублирование кода. А для компиляторов это очень актуально.

    IT>Оказалось, что так оно и есть, логики в компиляторе много, а кода действительно мало. Разработчикам удалось её упаковать в pattern matching и варианты (алгебраические типы).


    О том и речь. Но упакованная таким образом она как не странно воспринимается намного лучше чем поря if-ов и разброснные по всему коду классы. Что уж там говорить о Посетителях на 10 экранов?

    IT>Пример.


    IT>Распаршенные выражения в компиляторе представляются классом PExpr примерно такой структуры:


    IT>
    IT>public variant PExpr
    IT>{
    IT>  | Array       { rank : PExpr; args : PExpr; }
    IT>  | Literal     { val  : Literal; }
    IT>  | ListLiteral { elements : list [PExpr]; }
    IT>  // ...
    IT>}
    
    IT>public variant Literal
    IT>{
    IT>  | Void
    IT>  | Integer { val : ulong; is_negative : bool; mutable treat_as : MType.Class; }
    IT>  // ...
    IT>}
    IT>

    IT>Опции варианта реализуются как сабклассы варианта. Т.е аналогичная запись на C# была бы такая:

    IT>
    IT>public class PExpr
    IT>{
    IT>  public class Array : PExpr
    IT>  {
    IT>    public PExpr rank;
    IT>    public PExpr args;
    IT>  }
    
    IT>  public class Literal : PExpr
    IT>  {
    IT>    public Literal val;
    IT>  }
    
    IT>  public class ListLiteral : PExpr
    IT>  {
    IT>    public list<PExpr> elements;
    IT>  }
    
    IT>  // ...
    IT>}
    
    IT>public class Literal
    IT>{
    IT>  public class Void : Literal
    IT>  {
    IT>  }
    
    IT>  public class Integer : Literal
    IT>  {
    IT>    public ulong       val;
    IT>    public bool        is_negative;
    IT>    public MType.Class treat_as;
    IT>  }
    
    IT>  // ...
    IT>}
    IT>

    IT>Т.е. уже здесь видна компакность записи подобных структур данных.

    Ты забыл конструкторы. Они тоже много места занимаю при этом являясь для данного случая чистым шумом. Меж тем макросики вроде [Record] позволяют добавить к классу конструктор соврешенно декларативно — в одно слово. Так что выигрышь увеличивается, а вот сложность программы только уменьшается. Нам ведь совсем не интересно смотреть на стократно повторяющиеся реализации тупых конструкторов? Зато увидав надписть [Record] и сразу понимашь, что конструктор не содержит ошибок и банально инициализирует поля.

    IT>Но это всё оказалось цветочки, по сравнению с обработкой этих данных. Вот кусочек компилятора:

    ...
    IT>Желающие могут переписать это на свой лад и даже поприменять разные паттерны, но боюсь что более компактного кода, чем на Nemerle не получится.

    Ага. Причем разумный ОО-программист сразу побежит делать Посетитель и сразу же получит лишнюю связанность и постоянное чувство дискомфорта от того что он не может вот так за прото взять и понять что же лежит в переменной, а вынужден клепать еще один Посететиль.

    IT>Такой код легко писать, легко понимать. У компилятора появляются дополнительные возможности по оптимизации. А унас поднимается планка наших возможностей.


    Именно, но мудрые дядки из Сана и МС боятся что народ не поймет сложностей. А в Сан еще и компостируют мозг разводя ноя что-то вроде "это же не объектно ориентированно...". В общем, театр абсурда.

    IT>Как любил поговаривать мой первый шеф — качество/сложность чего-либо не может превышать на порядок качества/сложности инструмента, с помощью которого оно сделано.


    Именно. И именно потому я поставил паттерн-матчинг и варианты выше.

    Интересно сколько нужно времени и сил, чтобы такими очевидными вещам прониклись современные "ОО-программеры"? И интересно какого черта это не видят ни в МС, ни в Сан?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[29]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 20:59
    Оценка:
    Здравствуйте, Сергей Туленцев, Вы писали:

    СТ>Исключения исключениям рознь. В джаве и дотнете при вылете исключения редко когда можно сделать что-то осмысленное. Но на них свет не сошелся.


    Это совершенно не так. Есть несколько разных политик обработки исключений. Например, в GUI-приложении довольно хорошо работает очень примитивная техника. Где-то на у самого корня цикла обработки виндовс-сообщений стоит перехватчик все до одного сообщений который просто выводит сообщение об ошибке и продолжает цикл выборки соощений. Это позволяет не завершать приложение аварийно если одна из его не важных функций не работает корректно. Например, если у нас есть редактор в котором есть функция печати и в ней есть ошибка, то попытка напечатать документ по крайней мере не приведет к потере всех данных.

    Другой пример серверное приложение с массой подключенных клиентов. Тут можно избрать политику "срубание" клинтского потока с продолжением работы всего рпиложения.

    Еще один пример — открытие файла. Файла может не быть или он может быть недоступен для чтения (защита, сбои, ...). Тут логично обернуть функцию открывающую файл в tye/catch чтобы в случае исключения показать соощение об ошибке и предложить выбрать другой файл.

    В общем, исключения совершенно нормальное и полезно средство бработки нештататных ситуаций. Но вот основную логику приложения на них делать ни в коем случае не стоит. Это чревато многими проблемами. Тут тебе и усложнение отладки. И неконтролируемая передача управления. Хот даже тут бывают исключения. Но они обычно ближе к хакам, а те сами не желательны.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[28]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 20:59
    Оценка:
    Синклер, уточни, плиз, с чем ты не согласен? Тебе нравится идея организации логики на исключениях?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[13]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 20:59
    Оценка: 1 (1)
    Здравствуйте, Sinclair, Вы писали:

    S>Да нет Влад. Ты преувеличиваешь. Злоупотребить крышкой в смолтоке очень трудно


    Я даже не вижу предмета для обсуждения. Мне было продемонстрированно такое злоупотребление в самом начале этого обсуждения
    Автор: Andrei N.Sobchuck
    Дата: 05.09.06
    и именно о нем и идет речь. Это пример прерывания вычисления выражения с передачей управления в другое место.

    S>:

    S>Опасность номер 1: для разработчиков библиотеки.
    S>У тебя есть некоторый код, который вызывает переданный тебе делегат. Этот делегат может оказаться с "миной". Ее эффект на твой код сравним с исключением: управление передается не на следующую инструкцию, а стреляет вверх по стеку. Со всеми finally, разумеется, хоть и безо всяких catch.
    S>В принципе, тебе и так надо писать код, который не приводит твои объекты в неконсистентное состояние от вылета исключения. Специально затачиваться на него не стоит — выше по стеку стоит соответствующий кэтч, который там написан с должным смыслом.
    S>Можно специально затачиваться на случай, когда тебе передали "крышку", которая хочет вернуться в такое место, которого в стеке уже нет. Это — уже вполне настоящее исключение, которое ты опять же можешь обработать, а можешь не обрабатывать, в зависимости от того, чего ты имел в виду.

    У тебя в корене не правльные посылы. Идея писать код в рассчете на побочные эффекты возникющие спантанно сама по себе ущербна. Логика болшинства приложений и так сложна, чтобы усложнять ее пдобным контролем.

    К тому же закладываться или не закладываться здесь в общем-то не так важно. Важно другое. Важно, что ты уже не можешь читая код делать предположение о его последовательности. Так читая код на C# я могу быть уверненым, что длинное выражение что бы не вычилсялось всегда попадет в переменную, если оно стоит с права от присонения ей значения. И я всегда уверен, что управление из этого вражения перейдет на следующую строку, а не убежит черти куда. По этому, кстати, очень плохо когда пишут return на одной строке:
    if (ля-ля-ля) return;

    Человек читающий такой код может не заметить его и не верно понять логику. Ветвление управления яуляется очень важным в импертивном коде чтобы на него смотреть сквозь пальцы.

    По этому, пдобные "крышки" в середине выражений — это очень порочная практика, и есл ей еще и хвастаются, то это или откровенно не высокий уровень программиста, или очень плохие традиции в ЯП.

    S>Опасность номер 2: для пользователя.

    S>Можно попробовать передать блок с крышкой вверх по стеку, где его выполнение — гарантированная засада. Это ошибка, которую бы лучше ловить. В принципе, есть еще много спопобов случайно сделать ошибку такого рода.

    Видимо это и есть то достоиство выделющее Смолток и что так сильно воспевают его поклонники. Для меня любая возможность сделать ошику — это плохо. И чем от большего числа ошибок уберегает меня ЯП, тем лучше для меня. В идиале ЯП вообще не должен позволять делать случайные ошибки. Глупости лучше делать явно. И наличие в ЯП возможностей потенциально приводящих к пробемам — это очень плохо. Это и есть те саые грабли из-за которых я охладел к С++ в свое время.

    S> Хотя, возможно, такие вещи стоило бы отслеживать на уровне компилятора — ескейп анализ, и сразу говорим: "братан, крышку можно передавать только вниз по стеку, как и ссылки на локальные переменные. Вверх — низзя". Не дожидаясь, пока тестеры на это наступят.


    Вообще-то невозможность передачи блока кода в другие части программы — это вообще очень плохо. А исключения и того хуже. Так что защита конечно нужна, но я бы вообще отказался от таких возможностей которые приводят к таким проблемам.

    К тому же проанализировать возврат из выражения вообще нельзя. Так что решение все равно будет избыточным, хотя и очень не простым в реализации.

    S>Причем в большинстве случаев такого не случится, потому как анонимные блоки редко когда вообще передаются наверх.


    Еще разок взгляни вверх этого сообщения и сходи по ссылочке. Этот пример был приведен как мега-крутость. Так что грабли не то что бы редки. Они даже круты.

    S> Это уже хардкорный код типа комбинаторов предикатов, в реальных проектах нужный только в 1% случаев.


    Нда, Синклер, отстал ты от жизни. Как только в руки приличного программита попадает ляюба он начинает исползовать ее на право и на лево. А уж в Смолтоке традиции этого дела уже давнии. Ты думаешь, чтоем они хвастаются то?

    S>А в 99% случаев семантика крышки ясна как божий день, и ни малейшего затруднения с пониманием, куда перейдет управление, у тебя не будет. А ведь только это и представляет проблему.


    Понимаш ли в чем дело. Твои проценты это залихватское высасывание из пальца. Рельно же кто-то будет остерегаться делать какие-то опасные действия или просто писать трудный в чтении код, но другие (что амечательно продемонстрировал Andrei N.Sobchuck
    Автор: Andrei N.Sobchuck
    Дата: 05.09.06
    ) будут не только класть грабли в код, но и годро демонстрировать это на форуме. Мол, смотрите как круто! По этому я считаю, что грабли из ЯП надо удалять, а не поощрять их добавление. Именно по этому нелокальные возвраты запрещены в большинстве сорвеменных языков и именно по этому на исключениях очень не советуют строить логику приложения.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[16]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 20:59
    Оценка: :)
    Здравствуйте, FR, Вы писали:

    FR>Он наверно про VBScript.


    Не похоже
    Автор: vdimas
    Дата: 09.09.06
    . Товарищь явно путает мягко с мелокомягким .
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[28]: Дополнение к посту Vermicious Knid
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 20:59
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    P>>b. массив данных по прежнему может быть разных типов, главное есть итератор do: , принимающий лямбду.


    FDS>Ерунда, это без разницы, если все типы поддерживают один и тот же интерфейс. Это сделать не сложно. Другое дело, что придётся писать небольшой класс-обёртку (один) для стандартных типов, что бы они то же поддерживали этот интерфейс.


    Смолток язык динамически типизированный, да еще в добавок с утиной типизацией. Так что положить то массив можно и обработать можно, но вот надежность у такого кода будет ниже плинтуса потому как до выполнения даже бог не сможет предскзать смогут ли объекты обработоать посылаемые им сообщения (взов методов). Ты же смотришь с позиции языков со статической типизацией. В общем-то и в C# можно положить все что угодно приведя это дело к object. Но вот с обработкой действительно будут проблемы. Прийдется или проверять типы динамически, например:
    void Do(object obj)
    {
        IMyInterface myInf = obj as IMyInterface;
        
        if (myInf != null)
        {
            ЧтоТоДелаем(myInf);
            return;
        }
        
        string str = obj as string;
        
        if (myInf != null)
        {
            ДелаемЧтоТоДругое(str);
            return;
        }
    
        if (obj is int)
            ДелаемЧтоТоСовсемДругое(str);
    }

    или дергать методы через рефлексию.

    Первый способ в C# не удобен и не уневерсален, второй — медленнен.

    В Немерле, кстати, первый случай реализуется довольно удобно:
    void Do(object obj)
    {
        | myInf is IMyInterface => ЧтоТоДелаем(myInf);
        | str   is string       => ДелаемЧтоТоДругое(str);
        | obj   is int          => ДелаемЧтоТоСовсемДругое(str);
        | _                     => () // ничепго не делаем.
    }


    P>>c. условие проверки такое: все хорошо если в массиве есть 2 смежных элемента , из которых второй равен первый*2. Обращаю внимание что типы чисел в массиве данных разные.


    FDS>Без проблем, если есть интерфейсы. Просто без проблем...


    Да без проблем и без интерфейсов. Например, следующий код берет массив и умножает его элементы на два без учета конкретного типа.
    using System;
    using System.Console;
    using Nemerle.Utility;
    
    def ary = array[2 : object, 1.2F, 2.3D, "5"];
    // Map() конвертирует (отображает) один массив в другой преобразуя элементы с 
    // помощью переданной ему функции (в данном примере лямбды).
    def lst = ary.Map(elem => Convert.ToDouble(elem) * 2.0);
    WriteLine(lst.ToString(", "));


    Вот только одна проблема. Надежность такого кода зависит от ветра в поле. Достоточно поместить в массив хотя бы один элемент не конвертируемый в double и привет.
    Например:
    using System;
    using System.Console;
    using Nemerle.Utility;
    
    // По умолчанию Немерле считает смешивание разных отипов в коллекциях ошибкой.
    // Чтобы подсказать тип элементов мы уточняем тип первого из них. 
    // Далее Немерле сам догадывается, что все остальные типы нужно привести к object.
    // Таким образом мы получаем массив object-ов хранящий ссылки на объекты разных типов.
    def ary = array[2 : object, 1.2F, 2.3D, "x5"];
    def lst = ary.Map(elem => Convert.ToDouble(elem) * 2.0);
    WriteLine(lst.ToString(", "));

    приведет к ислючению в рантайме потому как х5 не преобразуется в double.

    Собственно этим и отличается динамический язык от статического. С одной стороны чуть проще, так как подобные хаки не требуют специальных вызовов вроде Convert.ToDouble(elem) (все приводится автоматом), но с другой постоянно можно получить рантайм-ошибку. Это приводит к юнит тестированию на каждый чих и т.п.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[26]: Оффтопик: Nemerle
    От: IT Россия linq2db.com
    Дата: 10.09.06 21:49
    Оценка: 1 (1) +2 :))) :))) :)
    Здравствуйте, Gaperton, Вы писали:

    G>>>Оказывается — это паттерн-матчинг с алгебраическми типами, дернутыми из ML нам так помог, а не макросы. Ты меня разочаровываешь.

    IT>>От вас же, просвящённых, только пока и слышно: мы знаем что такое pattern matching, поэтому мы умные.
    G>Ну я понимаю, что некоторые тут чувствуют себя неудобно, когда рядом кто-то шибко умные слова говорит, паттерн-матчинг там или карринг. Прям свербит, хочется в харю очкастым умникам дать, правда? Но ничего, это пройдет.

    В харю хочется дать за демагогию, хамство и бахвальство. Это правда. И вряд ли это когда-нибудь пройдёт.

    Что касается умных слов, то с этим на RSDN всегда было всё в порядке. Такие люди всегда welcome и их есть на RSDN, в том числе и среди функциональщиков. А вот за сочетанием шибко умных слов с тем, за что иногда хочется дать в харю, как правило нет ничего, только один трёп. На деле такие очкарики оказваются с целым букетов жизненных комплексов, с каким-нибудь крайне сомнительным профессиональным бэкграундом и без единого проекта за душой, о котором не стыдно было бы рассказать окружающим. Настоящему профессионалу нет надобности скрываться за маской умника очкарика и уж тем более мокать в дерьмо своих коллег, чтобы доказать самому себе, что он пока ещё не является полным ничтожеством и неудачником. Вместо этого профи всегда найдёт чему поучиться у других.

    IT>>Так вот. Мы будем рассказывать людям что такое pattern matching и как он работает, они тоже будут становиться умными, а вы будете потихоньку превращаться в Неуловимых Джо.

    G>А тебе не приходило в голову, что мы, очкастые умники, чти-нибудь еще умное за это время выучим, пока вы с паттерн-матчингом разбираетесь?

    Нет, не приходило. Лисп является тем функциональным ископаемым, на котором построены все остальные, могущие похвастаться, что обладают тем, чего нет в мейнстриме. А мейнстрим сейчас медленно, но уверенно переваривает и впитывает из этого всё лучшее.

    Но даже если вы и откопаете что-то новое, то сразу же прибежите сюда и начнёте опять нам рассказывать о преимуществах своего интеллекта. И как результат проболтаетесь Алтернатива одна — умнеть и переться от собственной крутости в одиночестве. Но в эту альтернативу я не верю. Очкастому умнику для демонстрации размеров своего головного мозга нужна аудитория.

    IT>>Хотя, время ещё есть одуматься, засунуть свой сарказм подальше и начать сеять доброе и вечное вместе с нами


    G>Ой, какой кошмар — не успеем, и поезд уйдет — IT c Владом все-превсе расскажут про паттерн-матчинг, и все в форуме "философия" сразу станут умными, а "мы" останемся в дураках.


    Испугался? Не надо так сильно бояться. Тем более, что вы останетесь не в дураках, а превратитесь в Неуловимых Джо.

    G> Ну и напугал ты меня. Времени-то много осталось, до ухода поезда?


    Вот сейчас тебе назло пойду и расскажу FDSC как работают замыкания. Это будет хоть и небольшое, но всё же сокращение времени до ухода твоего поезда
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[33]: А как оно в Nemerle?
    От: Сергей Туленцев Россия http://software.tulentsev.com
    Дата: 10.09.06 22:14
    Оценка:
    Здравствуйте, Beam, Вы писали:

    СТ>>Не буду, это было бы глупо. Но для того и нужна голова, чтобы думать.


    B>Об этом и речь




    СТ>>А чем этот ensure отличается от using?


    B>Ensure — это аналог try-finally в других языках


    Ну тогда это аналог юзинга, потому что последний разворачивается как раз в try/finally.
    --
    Re[24]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 22:27
    Оценка: 5 (1)
    Здравствуйте, FDSC, Вы писали:

    FDS>Честно говоря, я вообще не понимаю, зачем в Nemrle введены ref и out параметры,


    Это как раз просто. Немерле позволяет использовать библиотеки дотнета и создавать библиотеки для других языков. Так как C# язык в дотнете особенный (флагманский, все под него подстраиваются), то Немерле обязан воспроизводить любой интерфейс который только можно создать на C#. Ну, и не надо забывать про то что Немерле многое взял у C# просто с целью быть более понятным для мэйнстрим-программистов которые как раз в основном работают на C#, С++ или Яве.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[24]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 22:27
    Оценка: 1 (1) +1
    Здравствуйте, Gaperton, Вы писали:

    G>О сколько нам открытий чудных. Оказывается — это паттерн-матчинг с алгебраическми типами, дернутыми из ML нам так помог, а не макросы. Ты меня разочаровываешь.


    Ага. А надо этого стыдиться? Взяли из МЛ самое лучшее. Поправили форму и встроили в один из самых популярных на сегодня языков. Макросы тоже дернули. Так же по ходу дела их доработали и очеловечили. Тоже плохо?

    Чувствую какую-то нездоровую зависть. Может чем яд испускать и демонстрировать свою крутость на право и на лево помог бы тем же начинающим понять те самые вещи которые тебе так нравятся в ФЯ?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[24]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 22:27
    Оценка: 12 (1)
    Здравствуйте, squiz, Вы писали:

    S>Кстати, по поводу компилятора: это только у меня так что hello.n собирается 3-4 сек. ? На той же машине 1.2M солюшн ребилдится за макс 1 сек. полностью...


    Чтобы компилятор загружался быстрее нужно пргнать по его сборкам ngen. Уверен что поиск по словам NGen и Nemerle.dll по нашему сайту даст нужный результат.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[25]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 22:27
    Оценка: +1
    Здравствуйте, IT, Вы писали:

    IT>Есть такое дело. Первый раз долго поднимается компилятор. Потом всё значительно быстрее.


    Не... Надо просто NGen-ить сборки Nemerle-в.
    http://rsdn.ru/Forum/?mid=1961823
    Автор: VladD2
    Дата: 19.06.06
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[26]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 22:27
    Оценка:
    Здравствуйте, squiz, Вы писали:

    IT>>1.2M чего?

    S>Исходников

    Размер основной сборки. Плюс еще две библиотеки 200 и 370 кил каждая. Так что без NGen-а действительно тормозит http://rsdn.ru/Forum/?mid=1961823
    Автор: VladD2
    Дата: 19.06.06
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[33]: А как оно в Nemerle?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 22:27
    Оценка: -1
    Здравствуйте, Beam, Вы писали:

    B>Ensure — это аналог try-finally в других языках


    Что очень неудобно, надо признать.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[16]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 22:27
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>Просто удивительно, но количество желающих применить ко мне аргументацию с позиций физической силы резко уменьшилось до нуля после года занятий в "качалке".


    Да, современные стеройды рулят. Арнольду пришлось их жрать лет 10 подряд.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[3]: Кстати
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 22:27
    Оценка:
    Здравствуйте, squiz, Вы писали:

    MS>>И ты должен это учитывать, несмотря на всякие "преведы" уважаемого Влада (извини, Влад, но слово "отвичаю" я приравниваю к слову "превед" в твоей лексике — пожалуйста, избегай впредь падонковщины, иначе я буду причислять тебя к неуважаемым мною падонкам). Такие дела.


    S>Никогда не замечал за ним падонковского языка. Он просто много пишет и быстро а посему много опечаток


    Не обращай внимания. Это такой вариант демагогии — докапывания не до слов оппонента, а до самого оппонента или до его проявлений. Вот у меня удобно до опечаток докопаться находя в них тайный смысл и даже падонковщину. Ребята просто упражняются в демагогии пользуясь гостеприимством.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[22]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 22:38
    Оценка: 1 (1)
    Здравствуйте, FDSC, Вы писали:

    FDS>здесь
    Автор: FDSC
    Дата: 08.09.06
    в рамках этого форума частично обсуждаем.

    FDS>Не получается понять синтаксис языка: что ни напишу, компилятор всё время ругается . Подожду пока выйдет какая-нибудь нормальная документация...

    Это потому что язык строгий и многое контролирует. Вот только сообщения об ошибках не всегда качественные. Над этим еще надо работать.

    Вот уже можно сказать работаем с твоей помощью
    \http://nemerle.org/bugs/view.php?id=752
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[24]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 22:38
    Оценка: +2
    Здравствуйте, FDSC, Вы писали:

    FDS>Ага, на C# я начал программировать вообще ничего не читая


    Правильно. Это потому что у тебя был опыт с Дельфи. Оба языка алголоподобные и исповедуют общую идеологию — компонентную.
    А Немерле кроме нее еще исповедует функциональный подход. Вот его то как раз понять не просто.

    FDS> и когда я что-то в нём не знаю, обычно оказывается, что это что-то сделано так, как я думаю, а не как-то по другому. Сколько можно читать документацию, в которой, к тому же, некоторые примеры раза по три повторяются...


    Мое мнение — надо трясти. То есть надо взять простую задачку и попробовать решить на языке. По началу писать на Немерле как на C#. Ну, возможно с небольшим отклонением вроде выовда типов. Далее потихоньку начинаем добавлять фичи которых нет в Шарпе. Для начала локальные функции. Далее еще что-то. Каждый раз делая это обращаешся к статье. Каждое новое обращение будет давать все более и более целостную картину. И ты сам не заметишь как со временем ты будешь все больше и больше писть на Немерле нежели на C#++.

    Я уже видел это на примере двоих человек. Плюс сам прошел через это.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[23]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.09.06 22:38
    Оценка: -2
    Здравствуйте, FR, Вы писали:

    FR>Судя по тому как плаваешь в тех же замыканиях тебе нужно вообще подучить базовые понятия функционального программирования, лучшая книга по моему "Функциональное программировани" Филда и Харрисона


    По-моему, все эти книги только хуже сделают. Не видел ни одной доходчивой для императивщика. Сам помню опупение вызываемое чтением подобного бреда.

    Мое мнене лучше просто пробовать. Пробовать по чуть-чуть и каждый раз подчитывать информацию по изучаемому вопросу.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[30]: Насколько важен синтаксис языка?
    От: Сергей Туленцев Россия http://software.tulentsev.com
    Дата: 10.09.06 22:41
    Оценка: +1
    VD>В общем, исключения совершенно нормальное и полезно средство бработки нештататных ситуаций. Но вот основную логику приложения на них делать ни в коем случае не стоит. Это чревато многими проблемами. Тут тебе и усложнение отладки. И неконтролируемая передача управления. Хот даже тут бывают исключения. Но они обычно ближе к хакам, а те сами не желательны.

    Никто не говорит, что на них надо делать основную логику работы приложения. Просто обычно работа с исключениями происходит так: где-то в самом низу что-то сломалось и оттуда вылетает исключение, и летит вверх по стеку вызовов, потому что никто не знает, что с ним делать. И вот оно наконец долетает до верхнего уровня, который знает, как можно было бы починить ситуацию, но — поздняк метатться, стек то размотан уже.

    Вот пример, услышанный от одного умного мужика.


    log-analyzer
        |
        |
        |-----> analyze-log
                      |
                      |
                      |-------> parse-log-file
                                       |
                                       |
                                       |--------> parse-log-entry

    Есть у нас некий анализатор (функция верхнего уровня). Она может парсить логи. Логи хранятся в файлах и состоят из записей |entries).
    Так вот, предположим, что в процессе работы parse-log-entry ей встретилась запись неправильного формата (malformed entry). Она и знать не знает о том, что ей делать в таком случае, потому выбрасывает исключение. parse-log-file тоже не знает, что делать, и пробрасывает его дальше (прерывая тем самым обработку файла в милллон записей). То же и с analyze-log, плюс еще теряется информация о том, какой именно из тысячи файлов мы только что обрабатывали. И вот наконец, дело доходит до верхнего уровня, который знает про "политику партии", что же далать в таких случаях. Но, как я уже говорил, поздняк метаться. Восстановиться мы уже не сможем. А могли бы. Например, пропустить эту запись. Или исправить формат записи и попробовать прочитать еще раз.

    На всякий случай: умного мужика зовут Pieter Seibel, и пример был подслушан на его выступлении на тему своей книги (Practical Common Lisp)
    --
    Re[24]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 11.09.06 03:57
    Оценка: 12 (1)
    Здравствуйте, FDSC, Вы писали:

    FR>>Судя по тому как плаваешь в тех же замыканиях тебе нужно вообще подучить базовые понятия функционального программирования, лучшая книга по моему "Функциональное программировани" Филда и Харрисона


    FDS>Вы правы, уже подумал на эту тему. Спасибо за совет.


    Кроме книжек можно ещё поиграться с Рефлектором и посмотреть как реализуется захват контекста замыканиями. Особенно, еслм нет проблем с самим C# и с делегатами. Например, вот такой кой на C# 2.0:

    class Class1
    {
      delegate int FooTest(int p);
    
      int _classField = 1;
    
      int Foo(int parameterField)
      {
        int localField = 2;
    
        FooTest test = delegate(int localFunctionParameter)
        {
          return _classField + parameterField + localField + localFunctionParameter;
        };
    
        return test(3);
      }
    }

    разворачивается компилятором в примерно следущее:

    class Class1
    {
      private delegate int FooTest(int p);
        
      int _classField = 1;
    
      [CompilerGenerated]
      private sealed class LocalClass
      {
        public Class1 __this;
        public int    localField;
        public int    parameterField;
    
        public int LocalFunction(int localFunctionParameter)
        {
          return __this._classField + parameterField) + localField) + localFunctionParameter;
        }
      }
    
      private int Foo(int parameterField)
      {
        LocalClass class1 = new LocalClass();
    
        class1.parameterField = parameterField;
        class1.localField     = 2;
        class1.__this         = this;
    
        return class1.LocalFunction(3);
      }
    }

    Из этого примера хорошо видно, что анонимный делегат и замыкания в C# — это не более чем синтаксический сахар. Хотя, надо признать, весьма полезный.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[17]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 11.09.06 04:03
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Да, современные стеройды рулят. Арнольду пришлось их жрать лет 10 подряд.


    стероиды — пакость, проблем со здоровьем потом не оберешься. да и всевозможные "спортивные питания" тоже далеко не самая лучшая вещь на свете
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[11]: Дополнение
    От: Дарней Россия  
    Дата: 11.09.06 04:05
    Оценка: -1
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Ты хоть разберись толком, к кому обращался Влад.


    нет, я абсолютно не понимаю. при чем здесь мыши, зерно и ученые?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[14]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 11.09.06 04:16
    Оценка: +2 :)
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Что-то мне так не показалось. Скорее уж популярно псевдологическое: "кто не следует за большинством, тот совершает глупость". Разницу не чуешь?


    если уж делать выводы на основании популярности и распространенности, то это утверждение вполне логично. А то я здесь видел немало размышлений о том, что использование малораспространенных языков придает некой "элитарности" и прочих непонятно-мистических вещей.
    На самом деле те, кто поумнее, больше думают о качествах собственно языка, а не его популярности или модности. Но почему-то каждый раз, когда речь идет о конкретных фичах, всё завершается криками "да это просто язык для элиты, всяким гоям не понять"

    ГВ>Вот интересный момент. Когда радетели следования за большинством начинают пинать меньшинство (просто в силу количественных показателей), это самоутверждением не считается. В обратной ситуации сразу же крик про "самоутверждение". Как думаешь, в чём тут дело?


    наверно в том, что делать выводы на основании некой "элитарности" — глупо. см предыдущее сообщение
    мэйнстрим же, при всей избитости этого понятия, не содержит откровенно неудачных практик — иначе он не стал бы мэйнстримом.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[31]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 11.09.06 04:26
    Оценка: 29 (1) +2
    Здравствуйте, Сергей Туленцев, Вы писали:

    если возникает необходимость делать обработку исключений в зависимости от некоторых условий (продолжить, прервать работу), то здесь просто напрашивается паттерн "стратегия". и никаких проблем
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[34]: А как оно в Nemerle?
    От: Beam Россия  
    Дата: 11.09.06 05:23
    Оценка: +1
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, Beam, Вы писали:


    B>>Ensure — это аналог try-finally в других языках


    VD>Что очень неудобно, надо признать.


    Что неудобно? Использовать try-finally при работе с ресурсами?
    Странные Вы вещи говорите, однако ...

    И возвращаясь к теме. Так что надо делать в Nemerle, чтобы не натыкаться в макросах на продемонстрированные "грабли"?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[25]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 11.09.06 05:23
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Из этого примера хорошо видно, что анонимный делегат и замыкания в C# — это не более чем синтаксический сахар. Хотя, надо признать, весьма полезный.


    Угу я тоже знаю людей программирующих на C++, но думающих в терминах ассемблера
    Иногда от этого есть польза, но в большинстве случаев только вред.
    Re[14]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 11.09.06 05:54
    Оценка: 1 (1) +1 -1
    Здравствуйте, VladD2, Вы писали:

    VD>У тебя в корене не правльные посылы. Идея писать код в рассчете на побочные эффекты возникющие спантанно сама по себе ущербна.


    Идея писать код без учета т.н. exception safety не менее ущербна.

    VD> Логика болшинства приложений и так сложна, чтобы усложнять ее пдобным контролем.


    Именно поэтому писать exception safety код очень сложно и этим часто пренебрегают. Или даже не догадываются о том, что написанный код не является exception safety.

    VD>К тому же закладываться или не закладываться здесь в общем-то не так важно. Важно другое. Важно, что ты уже не можешь читая код делать предположение о его последовательности. Так читая код на C# я могу быть уверненым, что длинное выражение что бы не вычилсялось всегда попадет в переменную, если оно стоит с права от присонения ей значения. И я всегда уверен, что управление из этого вражения перейдет на следующую строку, а не убежит черти куда.


    Такие рассуждения еще можно применять к C (и то без учета всяких longjmp-ов) или к Виртовскому Паскалю. Но вот по отношению к современным языкам, в которых бросание исключений является основным способом информирования о любых ошибках, такие рассуждения звучат, по меньшей мере, наивно.

    Для разминки, уверен ли ты, что переменная dataRows всегда получит причитающееся ей значение в таком примере:
    dataRows = FastCsvParser.makeParser( parsingOptions ).load(
        fileName + makeDataSpecificExtension( dataParams ) ).getAllRows();


    А теперь представь, что makeDataSpecificExtension это блок в SmallTalk или Ruby. Выполненый из него return прерывает данное выражение точно так же, как и выброшенное где-нибудь в load() исключение. Поэтому, если использующий блоки кода фрагмент написан в соответствии с принципами exception safety, то ему безразлично, был ли он прерван исключением или нелокальным return-ом.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[27]: Оффтопик: Nemerle
    От: FR  
    Дата: 11.09.06 06:18
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Нет, не приходило. Лисп является тем функциональным ископаемым, на котором построены все остальные, могущие похвастаться, что обладают тем, чего нет в мейнстриме. А мейнстрим сейчас медленно, но уверенно переваривает и впитывает из этого всё лучшее.


    Нет после лиспа уже было много вещей которых в нем нет и вряд ли уже будут.
    И вообще пока мейнстрим будет давится и с отрыжками переваривать функциональщину, новое може появится совсем в другом месте
    Re[24]: Оффтопик: Nemerle
    От: FR  
    Дата: 11.09.06 06:18
    Оценка:
    Здравствуйте, VladD2, Вы писали:


    VD>Интересно сколько нужно времени и сил, чтобы такими очевидными вещам прониклись современные "ОО-программеры"? И интересно какого черта это не видят ни в МС, ни в Сан?


    Ну это легко подcчитать. Из даты начала рекламной компании Nemerle на rsdn вычесть дату первого относительно большого обсуждения функциональщины здесь же
    Re[29]: Дополнение к посту Vermicious Knid
    От: pavel74  
    Дата: 11.09.06 06:23
    Оценка: 5 (1)
    Здравствуйте, VladD2, Вы писали:


    VD>Собственно этим и отличается динамический язык от статического. С одной стороны чуть проще, так как подобные хаки не требуют специальных вызовов вроде Convert.ToDouble(elem) (все приводится автоматом),

    Ну наконец-то . Полностью согласен, за это и любят динамические языки.

    VD>но с другой постоянно можно получить рантайм-ошибку. Это приводит к юнит тестированию на каждый чих и т.п.

    Тоже верно, просто каждый для себя делает свою оценку этих плюсов/минусов, на основе своего опыта. Теоретизировать на эту тему смысла нет.

    И еще замечу такую странность , те кто реально программирует на динамических языках — этот недостаток не считают фатальным (в сравнению с получаемыми упрощениями). А те кто только теоритически рассуждает — считают фатальным.

    Для реальной работы роль играет не токо на скоко в языке есть те или иные возможности, но и на скоко качетсвенны и функциональны IDE для них, а в этом плане с мегабаблом вкладываемым MC в VS и .Net тягаться уже сложнее.
    Re[31]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 11.09.06 06:25
    Оценка:
    Здравствуйте, Сергей Туленцев, Вы писали:

    VD>>В общем, исключения совершенно нормальное и полезно средство бработки нештататных ситуаций. Но вот основную логику приложения на них делать ни в коем случае не стоит. Это чревато многими проблемами. Тут тебе и усложнение отладки. И неконтролируемая передача управления. Хот даже тут бывают исключения. Но они обычно ближе к хакам, а те сами не желательны.


    СТ>Никто не говорит, что на них надо делать основную логику работы приложения.


    +1

    СТ>Есть у нас некий анализатор (функция верхнего уровня). Она может парсить логи. Логи хранятся в файлах и состоят из записей |entries).

    СТ>Так вот, предположим, что в процессе работы parse-log-entry ей встретилась запись неправильного формата (malformed entry). Она и знать не знает о том, что ей делать в таком случае, потому выбрасывает исключение. parse-log-file тоже не знает, что делать, и пробрасывает его дальше (прерывая тем самым обработку файла в милллон записей). То же и с analyze-log, плюс еще теряется информация о том, какой именно из тысячи файлов мы только что обрабатывали. И вот наконец, дело доходит до верхнего уровня, который знает про "политику партии", что же далать в таких случаях. Но, как я уже говорил, поздняк метаться. Восстановиться мы уже не сможем. А могли бы. Например, пропустить эту запись. Или исправить формат записи и попробовать прочитать еще раз.

    Данный пример, имхо, как раз не очень показателен. По крайней мере, реализация parse-log-entry с расчетом на перехват исключений и иницирования иного parse-log-entry в C++ будет слишком дорогим решением с учтом стоимости try/catch на каждую из миллионов строк логов. Более разумно здесь было бы использовать коды возврата из parse-log-entry, как более дешевый вариант.

    Хотя сложный парсинг файлов как раз иногда требует организации нескольких вложенных циклов с разными условиями выхода из них, а в некоторых случаях и продолжения с точки прерывания какого-либо внутреннего цикла. Здесь локальная логика на исключениях может сильно упростить жизнь.

    Например, мне требовалось производить разбор write-ahead-log файлов, каждый из которых состоит из страниц фиксированного размера. Каждая страница снабжается служебной информацией + контрольная сумма, и содержит часть описания транзакции. Транзакция может занимать несколько последовательно идущих страниц. Каждый write-ahead-log файл (у меня они называются trace-файлы) имеет ограничение на размер. Если транзакция не поместилась полностью в один trace-файл, то она продолжается в следующем файле.

    При извлечении описания транзакции из таких trace-файлов нужно учитывать разные условия, как то: повреждение одной из страниц (несовпадение контрольной суммы), отсуствие какой-либо из страниц транзакции, преждевременное завершение trace-файла. Для алгоритма чтения trace-файлов все это, штатные ситуации. А на более верхнем уровне об этом вообще не нужно знать, нужно всего лишь знать, удалось ли прочитать очередную транзакцию или же просмотр завершен. Использование транзакций в этом случае мне показалось довольно простым решением реализации логики чтения подобных файлов:
    /* Это самая высокоуровневая функция чтения описания транзакции. */
    bool
    reverse_loader_t::next(
        const oess_1::char_t * & image,
        oess_1::uint_t & image_size,
        trace_file_number_set_t & used_traces )
        {
            try
                {
                    if( !m_is_current_file_open )
                        try_open_next_file();
    
                    /* Вот здесь идет основной алгоритм поиска. */
                    find_trx();
    
                    image_size = m_image_len;
                    image = &m_image[ 0 ];
                    used_traces = m_used_traces;
    
                    return true;
                }
            catch( const end_of_trace_ex_t & )
                /* Данное исключение всего лишь свидетельствует об
                   окончании всех trace-файлов и означает, что больше
                   ничего не найдено. */
                {}
    
            return false;
        }
    
    void
    reverse_loader_t::find_trx()
        {
            // Перебираем все страницы в цикле.
            // Игнорируем битые страницы и транзакции.
            // Вылетаем только по исключениям.
            while( true )
                {
                    // Поиск должен начинаться заново.
                    reinit_search();
    
                    try
                        {
                            find_first_trx_page();
                            pop_up_trx();
    
                            return;
                        }
                    // Эти исключения в данном контексте вполне уместны.
                    // На следующей итерации мы просто начнем поиск заново
                    // полностью проигнорировав все, что уже успели найти.
                    catch( const broken_page_ex_t & )
                        {
                            /* Битая страница всего лишь означает начало
                               поиска следующей транзакции. */
                            // Ошибочную страницу нужно пропустить, чтобы
                            // не инициировать бесконечный цикл.
                            go_to_next_page();
                        }
                    catch( const broken_trx_ex_t & )
                        {
                            /* Битая транзакция всего лишь означает начало
                               поиска следующей транзакции. */
                        }
                }
        }


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[23]: Оффтопик: Nemerle
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 11.09.06 07:55
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Если преобразовать этот код в C#, то мы получим примерно следующее (я попытаюсь записать в один if):


    И ты, Брут
    Автор: Vermicious Knid
    Дата: 20.02.06
    .

    IT>Желающие могут переписать это на свой лад и даже поприменять разные паттерны, но боюсь что более компактного кода, чем на Nemerle не получится.


    Один раз уже пробовал &mdash; <b>получается</b>
    Автор: Andrei N.Sobchuck
    Дата: 21.02.06
    .
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[15]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 11.09.06 08:02
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, Курилка, Вы писали:


    К>>Задача хорошего языка — легко и удобно выражать мысли программиста так, чтобы их понимал компьютер. Или у тебя есть какие-то другие идеи?


    VD>У меня другие. Компьютер без проблем понимает тупой язык вроде ассемблера. Так что я пишу код для других людеф и для себя в частности. Ну, а то что этот язык понимает и компьютер (точнее компилятор) это уже частности.


    VD>Это я к тому, что клавное в языке выразительность для программиста.


    А читать, значит, написанное мы не будем, так?
    Или тупой ассемблер у тебя == мыслям программиста?
    Re[31]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 11.09.06 08:03
    Оценка:
    Здравствуйте, Сергей Туленцев, Вы писали:

    СТ>поздняк метатться, стек то размотан уже.


    СТ>На всякий случай: умного мужика зовут Pieter Seibel, и пример был подслушан на его выступлении на тему своей книги (Practical Common Lisp)


    А, ну это понятно. Просто ни в CL ни в ST стек не разрушается при поиске обработчиков.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[26]: Не нужность super return (нелок. возврата) [рассм. п
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 11.09.06 08:06
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS>И что, это намного хуже и сложнее? И наверняка быстрее работает, чем перехват повторно вызывающихся нелокальных возвратов.


    И первый и второй вариант твоей программы не правильные. У тебя и там и там 2 ошибки в коде и 2 ошибки в дизайне. Что на на таких примерах можно продемонстрировать я не понимаю.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[15]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 11.09.06 08:29
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    ГВ>>Что-то мне так не показалось. Скорее уж популярно псевдологическое: "кто не следует за большинством, тот совершает глупость". Разницу не чуешь?

    Д>если уж делать выводы на основании популярности и распространенности, то это утверждение вполне логично.

    Вот именно. Если делать делать выводы на основании популярности и распространённости.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[32]: Насколько важен синтаксис языка?
    От: Сергей Туленцев Россия http://software.tulentsev.com
    Дата: 11.09.06 08:48
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Здравствуйте, Сергей Туленцев, Вы писали:


    СТ>>поздняк метатться, стек то размотан уже.


    СТ>>На всякий случай: умного мужика зовут Pieter Seibel, и пример был подслушан на его выступлении на тему своей книги (Practical Common Lisp)


    ANS>А, ну это понятно. Просто ни в CL ни в ST стек не разрушается при поиске обработчиков.


    Ага, он про это и говорил.
    --
    Re[16]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 11.09.06 09:04
    Оценка: +1
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Вот именно. Если делать делать выводы на основании популярности и распространённости.


    осталось еще понять, что кроме популярности есть второй фактор — время. И если за n>10 лет язык остался широко известен в узком кругу фанатов, то делать некоторые выводы из этого таки можно.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[17]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 11.09.06 09:07
    Оценка: 1 (1) -2
    Здравствуйте, Дарней, Вы писали:

    ГВ>>Вот именно. Если делать делать выводы на основании популярности и распространённости.


    Д>осталось еще понять, что кроме популярности есть второй фактор — время. И если за n>10 лет язык остался широко известен в узком кругу фанатов, то делать некоторые выводы из этого таки можно.


    Eiffel, например. Совсем таки не элитарный язык, а непосредственный конкурент Java и C#, да еще и появившийся гораздо раньше. Оказался в заднице благодоря маркетингу.

    Из операционнок таким же характерным примером является OS/2.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[18]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 11.09.06 09:54
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Eiffel, например. Совсем таки не элитарный язык, а непосредственный конкурент Java и C#, да еще и появившийся гораздо раньше. Оказался в заднице благодоря маркетингу.


    ну что ж, непомерную жадность можно наверно и к области маркетинга отнести. Хотя по моему, это больше вопрос здравого смысла и специального образования маркетолога здесь не требуется
    а вообще я про него мало что знаю, кроме того факта, что там есть инварианты — и это конечно плюс, хотя вряд ли решающий
    что еще в нем есть интересного? есть ли какие-то серьезные преимущества перед C#, к примеру?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[32]: Насколько важен синтаксис языка?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 11.09.06 10:17
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>Здравствуйте, Сергей Туленцев, Вы писали:


    Д>если возникает необходимость делать обработку исключений в зависимости от некоторых условий (продолжить, прервать работу), то здесь просто напрашивается паттерн "стратегия". и никаких проблем


    И как тебе этот паттерн вернёт управление в parse-log-entry?
    В лисповских кондишнах рестарты изначально есть как механизм обработки ситуации, тогда как в "традиционных" подходах, если мы "провалились" по исключению, то обратного пути нет.
    Re[19]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 11.09.06 10:34
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    E>>Eiffel, например. Совсем таки не элитарный язык, а непосредственный конкурент Java и C#, да еще и появившийся гораздо раньше. Оказался в заднице благодоря маркетингу.


    Д>ну что ж, непомерную жадность можно наверно и к области маркетинга отнести. Хотя по моему, это больше вопрос здравого смысла и специального образования маркетолога здесь не требуется

    Д>а вообще я про него мало что знаю, кроме того факта, что там есть инварианты — и это конечно плюс, хотя вряд ли решающий
    Д>что еще в нем есть интересного? есть ли какие-то серьезные преимущества перед C#, к примеру?

    Ну что есть? Всего не упомнишь, тем более, что дальше чтения документации из-за цен на Eiffel Studio у меня процесс не пошел.
    Сборка мусора, объекты-ссылки и объекты значения.
    Множественное наследование есть (с гибкой настройкой видимости имен).
    Обобщенные типы (что-то вроде C++ шаблонов, но проще, без заморочек).
    Указатели на функции и на методы объекта как агенты (что-то вроде C++ функторов, но проще и удобнее).
    Паскалеподобный синтаксис.
    Удобная система доступа к атрибутам. Например, запись:
    a.value

    может означать как обращение к атрибуту объекта с именем value, так и вызов метода-getter-а с именем value.
    Модульная система (что-то похожее на Java-вские пакеты).
    Ну и, конечно же, контракты.

    Сравнивать Eiffel и C# я не буду, т.к. мне не интересен ни тот, ни другой. Но сам факт, что Eiffel появился в 86-м...


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[18]: Насколько важен синтаксис языка?
    От: fmiracle  
    Дата: 11.09.06 10:37
    Оценка:
    Здравствуйте, FR, Вы писали:

    F>>Тут так же имеется часто (хотя и не всегда, согласен) верное следствие, что если даже слабый программист сможет при помощи данного средства эффективно решить задачу, то более сильный с помощью того же средства сможет решить ее еще быстрее.


    FR>Это неверное утверждение. Такие инструменты просто для некторого класса задач нивелируют уровень программистов. Но очень часто ничем ни помогают или даже мешают более сильному решать нетипичные задачи.


    Нетипичные — запросто. Я говорил про типичные
    Для решения типичных задач специальные средства обычно помогают и сильным и слабым.
    Нетипичные задачи — это всегда отдельный и сложный вопрос

    Собственно — я там про это долго и писал...

    На VB6 быстро рисуются GUI-фромчки. И задачу с небольшой вычислительнйо частью и пользовательским GUI что сильный что слабый программист легко на нем сделают. Сильный — все равно гораздо быстрее (сам видел). Вот для такой задачи он хорош (а очень ведь типичная задача в определенных кругах).
    Ну а, скажем, реализовать чисто на нем хоть какой численный алгоритм — это, конечо, убиться можно, я тут и не спорю...
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[24]: Оффтопик: Nemerle
    От: WolfHound  
    Дата: 11.09.06 10:50
    Оценка: +1
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    IT>>Желающие могут переписать это на свой лад и даже поприменять разные паттерны, но боюсь что более компактного кода, чем на Nemerle не получится.

    ANS>Один раз уже пробовал &mdash; <b>получается</b>
    Автор: Andrei N.Sobchuck
    Дата: 21.02.06
    .

    Ты демагогию не разводи. Вот ответ
    Автор: Vermicious Knid
    Дата: 21.02.06
    на твое пробовал...
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[19]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 11.09.06 10:59
    Оценка: +1
    Здравствуйте, Дарней, Вы писали:

    Д>что еще в нем есть интересного? есть ли какие-то серьезные преимущества перед C#, к примеру?


    Должен быть обратный вопрос: есть ли у C# серъезные преимущества перед Эйфелем.
    Re[33]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 11.09.06 11:02
    Оценка: +1
    Здравствуйте, Курилка, Вы писали:

    К>И как тебе этот паттерн вернёт управление в parse-log-entry?

    К>В лисповских кондишнах рестарты изначально есть как механизм обработки ситуации, тогда как в "традиционных" подходах, если мы "провалились" по исключению, то обратного пути нет.

    Не надо сразу кидать исключение. Надо спрашивать у стратегии, "что нам делать", и по результатам кидать исключение или продолжать работу.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[25]: Оффтопик: Nemerle
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 11.09.06 11:02
    Оценка: -1
    Здравствуйте, WolfHound, Вы писали:

    WH>Ты демагогию не разводи. Вот ответ
    Автор: Vermicious Knid
    Дата: 21.02.06
    на твое пробовал...


    Нафиг-нафиг такой ответ. Еще раз, нужно не переписать программу один в один (чем и занимается компилятор), а написать ОО программу, которая давала бы тайкой же результат. Ы?
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[20]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 11.09.06 11:07
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>Должен быть обратный вопрос: есть ли у C# серъезные преимущества перед Эйфелем.


    сами виноваты, распугав разработчиков непомерными ценами
    се ля ви, но сейчас вопрос надо ставить именно наоборот — и неважно, что появилось раньше
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[17]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 11.09.06 11:19
    Оценка: +1
    Здравствуйте, Дарней, Вы писали:

    ГВ>>Вот именно. Если делать делать выводы на основании популярности и распространённости.

    Д>осталось еще понять, что кроме популярности есть второй фактор — время. И если за n>10 лет язык остался широко известен в узком кругу фанатов, то делать некоторые выводы из этого таки можно.

    Нельзя делать выводы о качественных сторонах продукта по его распространённости.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[30]: Дополнение к посту Vermicious Knid
    От: WolfHound  
    Дата: 11.09.06 11:25
    Оценка:
    Здравствуйте, pavel74, Вы писали:

    VD>>Собственно этим и отличается динамический язык от статического. С одной стороны чуть проще, так как подобные хаки не требуют специальных вызовов вроде Convert.ToDouble(elem) (все приводится автоматом),

    P>Ну наконец-то . Полностью согласен, за это и любят динамические языки.
    А по мне так необходимость таких хаков следствие кривого дизайна.
    Единственное где нужно при нормальном дизайне Convert.ToXXX это ввод/вывод.
    Спрашивается накой черт мне нужен весьма сомниетльный сахар для ввода/вывода если этого самого ввода/вывода очень мало и он очень хорошо автамитизируется?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[18]: Насколько важен синтаксис языка?
    От: Turtle.BAZON.Group  
    Дата: 11.09.06 11:39
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Eiffel, например. Совсем таки не элитарный язык, а непосредственный конкурент Java и C#, да еще и появившийся гораздо раньше. Оказался в заднице благодоря маркетингу.


    Советую сходить на eiffel.com и узнать, что он вовсе даже не в заднице, а его создатели гребут бабло. В том числе и с Microsoft, Sun, IBM и т.д.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[26]: Оффтопик: Nemerle
    От: squiz  
    Дата: 11.09.06 11:49
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Не... Надо просто NGen-ить сборки Nemerle-в.

    VD>http://rsdn.ru/Forum/?mid=1961823
    Автор: VladD2
    Дата: 19.06.06


    Да. Было такое подозрение. Но почему-то не помню почему решил что при инстале оно NGen-ит само. Ступил.
    Never underestimate those behind you...
    Re[19]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 11.09.06 11:54
    Оценка: 1 (1) +1 -1
    Здравствуйте, Turtle.BAZON.Group, Вы писали:

    E>>Eiffel, например. Совсем таки не элитарный язык, а непосредственный конкурент Java и C#, да еще и появившийся гораздо раньше. Оказался в заднице благодоря маркетингу.


    TBG>Советую сходить на eiffel.com и узнать, что он вовсе даже не в заднице, а его создатели гребут бабло. В том числе и с Microsoft, Sun, IBM и т.д.


    Так гребут, что вынуждены делать бесплатную версию своей EiffelStudio чтобы привлечь новых разработчиков.
    Лет десять назад у них, вероятно, особых проблем-то и не было. А сейчас, на фоне распространенности Java (которая бесплатно есть на большем количестве платформ, чем Eiffel), агрессивного маркетинга C#, количества библиотек и фреймворков для Java и C#, количества IDE для Java/C#, количества документации/книг/учебных курсов, количества разработчиков, имеющих опыт разработки на Java/C#, перспективы у Eiffel-я, имхо, очень не важные.

    Не зря же Мейер сейчас статейки пишет, что мол дешевые индусы и воссточные славяне оставят без работы дорогих американских разработчиков. Если только последние не возьмутся за ум и не начнут использовать "правильные" инструменты, резко повышающие их (разработчиков то есть) производительность, то хана им. А правильным инструментом, естественно, является Eiffel Methodology + Eiffel Studio. Хотя чем Eiffel сейчас может конкурировать, например, с Java 5 + IDEA (Eclipse) лично я, например, не понимаю.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[26]: Оффтопик: Nemerle
    От: WolfHound  
    Дата: 11.09.06 11:54
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Нафиг-нафиг такой ответ. Еще раз, нужно не переписать программу один в один (чем и занимается компилятор), а написать ОО программу, которая давала бы тайкой же результат. Ы?

    Иди сюда и попробуй переписать SprintTyExpr в ОО стиле
    Особенно мне интересно что ты будешь делать с подобными выкрутасами:
            // the special case for unary operators
            | TT.TExpr.Call (TT.TExpr.OpCode (name), [parm], _) =>
              append (name);
              append ("(");
              recurse (parm.expr);
              append (")");
    
            // the special case for infix binary operators
            | TT.TExpr.Call (TT.TExpr.OpCode (name), [parm1, parm2], _) =>
              append ("(");
              recurse (parm1.expr);
              append (" " + name + " ");
              recurse (parm2.expr);
              append (")")
    
            // pretty print the list constructors
            | TT.TExpr.Call (TT.TExpr.StaticRef (_, mem, _), _, _) when is_list_cons (mem) =>
              print_list_constructors (expr)
                  
            // write all the other calls in prefix form 
            | TT.TExpr.Call (func /* PExpr */, parms /* list [Parm] */, _) =>
              recurse (func);
              append (" (");
              print_fun_call_parms (parms);
              append (")")
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[29]: А как оно в Nemerle?
    От: Klapaucius  
    Дата: 11.09.06 12:04
    Оценка:
    Здравствуйте, Beam, Вы писали:

    B>Я открыл статью Nemerle в Wikipedia, и я увидел, что та проблема, значение который Вы так пытаетесь преувеличить (незавершение работы метода, в который передан BlockClosure с возвратом), имеется и у Nemerle в макросах.


    Вы на верном пути. Есть мнение, что return где не появляется — везде вызывает проблемы, хотя и не одинаковой серьезности.
    В Nemerle можно вообще не прыгать. И, по умолчанию, возможности прыгать нет. По-моему, это не может не радовать. Но, видимо по той причине, что возможность попрыгать — это такие милые сердцу программистов грабельки, которые дороги как память, если очень хочется попрыгать все-таки можно. Для этого нужно подключить опредленное простарнство имен. Вот это мне, как раз, не очень нравится, хотя почему такую возможность оставили я понимаю.

    Непонятно мне другое. Почему возможность прыгнуть в Nemerle является оправдание возможности прыгнуть (причем, как я понял, гораздо дальше) в смолтоке? Тут, конечно, были примеры по существу вопроса, как использование ^ помогает сократить код, но вот это вообще к делу отношения не имеет.
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re[30]: Дополнение к посту Vermicious Knid
    От: Klapaucius  
    Дата: 11.09.06 12:04
    Оценка: :)
    Здравствуйте, pavel74, Вы писали:

    P>И еще замечу такую странность , те кто реально программирует на динамических языках — этот недостаток не считают фатальным (в сравнению с получаемыми упрощениями). А те кто только теоритически рассуждает — считают фатальным.


    А чего странного? Кто не считает фатальным — реально программирует. Кто считает фатальным — рассуждает теоретически. И те и другие свой выбор сделали — вот и вся магия.
    Это просто взгляд на проблему с позиции "я так делаю потому, что это хорошо", а не "это хорошо потому, что я так делаю".

    Впрочем, я пошутил.
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re[30]: Насколько важен синтаксис языка?
    От: Klapaucius  
    Дата: 11.09.06 12:04
    Оценка: +1 :))
    Здравствуйте, VladD2, Вы писали:

    VD>Личность сама о себе заявила. Я как бы его за язык не тянул. Не называть же его поглонником Немерла?


    Не поклонник — факт. Но по всему видно, что лицо не равнодушное.
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re[18]: Насколько важен синтаксис языка?
    От: Klapaucius  
    Дата: 11.09.06 12:04
    Оценка: +2
    Здравствуйте, vdimas, Вы писали:

    K>>И осуждение бездумного следования за меньшинством никак не является пропагандой бездумного следования за большинством. И наоборот.

    V>Является, к сожалению. У характеристики "меньшинство/большинство" всего 2 значения.

    А если посмотреть на выделенное?

    K>>Численность группы не обязана коррелировать с правотой воззрений этой группы.


    V>Хоть и верно но вообще не в тему. В том смысле что не доказывает и не опровергает ни чьей стороны, нейтральное громкое высказывание.


    Это как раз в тему, в отличие от многих других сообщений в этом треде. И оно опровергает.

    Вообще, само обсуждение этого вопроса — какое-то тихое безумие. Или детский сад.
    "Я пойду туда, потому что туда все пошли" или "я не пойду туда, потому что туда все пошли" — я вообще не вижу разницы.
    Тут где-то мозг задействуется?
    Если все это понимают, о чем вообще разговор тогда?
    Почему как только разговор заходит о правоте — непременно вспоминают и о численности?
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re[20]: Насколько важен синтаксис языка?
    От: Klapaucius  
    Дата: 11.09.06 12:04
    Оценка: 44 (4) +2 -1 :))) :))) :))
    Здравствуйте, Геннадий Васильев, Вы писали:

    K>>>И осуждение бездумного следования за меньшинством никак не является пропагандой бездумного следования за большинством. И наоборот.

    ГВ>>>Но осуждение "бездумного следования вообще" не должно сопровождается указанием качеств какой-либо группы "за которой следуют". В данном случае
    Автор: IT
    Дата: 20.06.06
    , однако, группа была указана и коррекций не последовало.

    F>>Вообще-то это высказываение как раз и было коррекцией — оно отлично дополняло высказывание предыдущего оратора, что "следование за большинством в наименьшей мере требует работы мозга", и как раз приводило систему в баланс — получая именно ситуацию "бездумного следования за кем-либо вообще".
    ГВ>Какая ещё, сто тысяч микробайт в шлейф, система?! Следовать "общепринятым" терминам в противовес правильных — как раз показатель бездумности.

    Это просто пять баллов. Прямо сейчас во флейм и создавать тему "общепринятый" термин vs. "правильный".
    Сотни людей столкнутся лбами и отпрянут с зубовным лязгом. Вот это веселье!
    Флеймообразующая концепция ясна как день: никто никогда нигде не знает, что правильно, но все всегда везде думают, что это знают.
    Сработает безотказно!
    Хотя, я наверное сейчас без толку распинаюсь. "Мне не страшны твои угрозы, Кассий! Они (как что-то там мнеее... память ни к черту) пролетают мимо!"
    Как это все объяснить человеку, который говорит, что "истина всегда конкретна". Это тупик.
    Но я попробую. Вообще-то, терминология — это результат договоренности. В этом смыcле все термины, конечно, должны быть общепринятыми. Правильные они или нет — вопрос сложный. Определенно — это не исключено. Понятно — очень зависит от того, что понимается под словом "правильный". Мое мнение: учитывая что терминология существует для того, чтобы люди друг друга понимали, то правильный термин в системе из n обменивающихся информацией людей такой, который одинаково понимают больше чем n/2. Т.е. общеприянтый.

    Что касается каких-то фактических сведений о мире — тут все, конечно, сложнее.
    Общепринято, что Земля — круглая. Это не так. Земля имеет форму геоида. Общеприянтые понятия "круг" и "геоид" нетождественны.
    Общепринято, что вечный двигатель первого рода невозможен. Это действительно так (с очень хорошей вероятностью -> 1). Означает ли это, что перпетуум-мобилистов зажимает тупое большинство?

    В большинстве случаев все упирается в договоренность. Кое-что можно доказать, но в рамках системы, непротиворечивость которой невозможно доказать в принципе. Что-то можно проверить на опыте (впрочем, доказательстов в этом случае будет иметь гм... статистический характер. В конце концов, вопросы в науке решаются не голосованием людей, а гы-гы голосованием экспериментов)

    ГВ>В таком контексте упоминание меньшинства в негативном смысле как раз указывает на то, что надо следовать за большинством, даже если оно поставило всё с ног на голову.


    Не надо додумывать за автора, что он собирался сказать, что он мог сказать, что он подумал и что мог бы подумать, но сразу не собразил.

    Так говорил кхм... Геннадий Васильев.

    F>>Предыдущий оратор из этого высказывания взял только часть. Это называется — некорректное уточнение.

    ГВ>Не-а. АК всё совершенно правильно сказал. Именно большинство, именно бездумное следование и именно размахивание "общепринятым" как показатель этой самой бездумности.

    Вот он, образ врага! Скифы, азиаты. Их много. Слышится ржание их коней. Размахивают. Голова — чтобы в нее есть.
    Подтягивают к стенам нашей цитадели осадные ветряные мельницы на колесах.

    Нас мало — понятно, что мы лучше. Правда, тут главное не ошибиться и не оказаться не в том хвосте нормального распределения.

    ГВ>Я понял в чём прикол. Не надо додумывать за автора, что он собирался сказать, что он мог сказать, что он подумал и что мог бы подумать, но сразу не собразил. Вот что было сказано, то и стало объектом обсуждения.


    Интересно, обстоятельно, респектабельно. Хоть сейчас на скрижали. Жаль только, что это, похоже, принцип на экспорт, а не для внутреннего пользования.
    Впрочем, воспринимать продукт творчества любого автора без некоторой доли фантазии — совершенно невозможно. Ведь существует же недоговоренность. Всегда. Любые слова вырваны из контекста, который у автора в голове и нам совершенно не известен.
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re[29]: Дополнение к посту Vermicious Knid
    От: FR  
    Дата: 11.09.06 12:16
    Оценка: +1
    Здравствуйте, VladD2, Вы писали:


    VD>Собственно этим и отличается динамический язык от статического. С одной стороны чуть проще, так как подобные хаки не требуют специальных вызовов вроде Convert.ToDouble(elem) (все приводится автоматом)


    В динамике нет никаких приведений, какой тип передали тот и используется, и исключение если он не подерживает то что требуется. И хаками это является только для статических языков.
    Re[31]: Дополнение к посту Vermicious Knid
    От: FR  
    Дата: 11.09.06 12:16
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

    WH>Здравствуйте, pavel74, Вы писали:


    VD>>>Собственно этим и отличается динамический язык от статического. С одной стороны чуть проще, так как подобные хаки не требуют специальных вызовов вроде Convert.ToDouble(elem) (все приводится автоматом),

    P>>Ну наконец-то . Полностью согласен, за это и любят динамические языки.
    WH>А по мне так необходимость таких хаков следствие кривого дизайна.

    нет никаких хаков

    WH>Единственное где нужно при нормальном дизайне Convert.ToXXX это ввод/вывод.


    Вот Convert.ToXXX как раз хак для кривого эмулирования динамического яхыка на статическом.

    WH>Спрашивается накой черт мне нужен весьма сомниетльный сахар для ввода/вывода если этого самого ввода/вывода очень мало и он очень хорошо автамитизируется?


    Я еще такого оригинального определения динамической типизации:

    сомниетльный сахар для ввода/вывода

    не встречал
    Re[28]: Оффтопик: Nemerle
    От: IT Россия linq2db.com
    Дата: 11.09.06 12:21
    Оценка:
    Здравствуйте, FR, Вы писали:

    IT>>Нет, не приходило. Лисп является тем функциональным ископаемым, на котором построены все остальные, могущие похвастаться, что обладают тем, чего нет в мейнстриме. А мейнстрим сейчас медленно, но уверенно переваривает и впитывает из этого всё лучшее.


    FR>Нет после лиспа уже было много вещей которых в нем нет и вряд ли уже будут.

    FR>И вообще пока мейнстрим будет давится и с отрыжками переваривать функциональщину, новое може появится совсем в другом месте

    Например? Из последнего появивщегося мне известно AOP. Но это не имеет отношения к функциональщине.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[21]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 11.09.06 12:26
    Оценка:
    Здравствуйте, Klapaucius, Вы писали:

    K>Общепринято, что вечный двигатель первого рода невозможен. Это действительно так (с очень хорошей вероятностью -> 1). Означает ли это, что перпетуум-мобилистов зажимает тупое большинство?


    Это не мешает поклоникам двигателей внутреннего сгорания зажимать любителей электродвигателей

    K>В большинстве случаев все упирается в договоренность. Кое-что можно доказать, но в рамках системы, непротиворечивость которой невозможно доказать в принципе. Что-то можно проверить на опыте (впрочем, доказательстов в этом случае будет иметь гм... статистический характер. В конце концов, вопросы в науке решаются не голосованием людей, а гы-гы голосованием экспериментов)


    Разработка софта ни наука, и решает многое не опыт а как раз голосование людей
    Re[26]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 11.09.06 12:32
    Оценка:
    Здравствуйте, FR, Вы писали:

    IT>>Из этого примера хорошо видно, что анонимный делегат и замыкания в C# — это не более чем синтаксический сахар. Хотя, надо признать, весьма полезный.


    FR>Угу я тоже знаю людей программирующих на C++, но думающих в терминах ассемблера

    FR>Иногда от этого есть польза, но в большинстве случаев только вред.

    При чём тут это? Или очень сильно хочется продемонстрировать собственную осведомлённость?
    Что нибудь по существу?
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[29]: Оффтопик: Nemerle
    От: FR  
    Дата: 11.09.06 12:38
    Оценка:
    Здравствуйте, IT, Вы писали:


    FR>>Нет после лиспа уже было много вещей которых в нем нет и вряд ли уже будут.

    FR>>И вообще пока мейнстрим будет давится и с отрыжками переваривать функциональщину, новое може появится совсем в другом месте

    IT>Например? Из последнего появивщегося мне известно AOP. Но это не имеет отношения к функциональщине.


    В лиспе не было вывода типов, ленивости, паттерн матчинга в общем очень многого из того что появилось в новых функциональных языках. Да и вообще лисп не чистый функциональный язык.
    Re[27]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 11.09.06 12:44
    Оценка: -2
    Здравствуйте, IT, Вы писали:

    IT>Здравствуйте, FR, Вы писали:


    IT>>>Из этого примера хорошо видно, что анонимный делегат и замыкания в C# — это не более чем синтаксический сахар. Хотя, надо признать, весьма полезный.


    FR>>Угу я тоже знаю людей программирующих на C++, но думающих в терминах ассемблера

    FR>>Иногда от этого есть польза, но в большинстве случаев только вред.

    IT>При чём тут это? Или очень сильно хочется продемонстрировать собственную осведомлённость?

    IT>Что нибудь по существу?

    Так это и есть по существу, ты по сути предложил человеку неверное определение замыкания основанное на одной из реализаций.
    Re[30]: Оффтопик: Nemerle
    От: IT Россия linq2db.com
    Дата: 11.09.06 12:46
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>В лиспе не было


    Теперь понятно. Придираемся к словам?

    FR>вывода типов, ленивости, паттерн матчинга в общем очень многого из того что появилось в новых функциональных языках.


    А где это всё было? Можешь перечислить? А мы потом посмотрим на время появления этих идей.

    FR>Да и вообще лисп не чистый функциональный язык.


    Да мне по барабану.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[28]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 11.09.06 12:50
    Оценка:
    Здравствуйте, FR, Вы писали:

    IT>>Что нибудь по существу?


    FR>Так это и есть по существу, ты по сути предложил человеку неверное


    В чём неверность?

    FR>определение замыкания основанное на одной из реализаций.


    Боже упаси, я не предлагал определение. Я всего лишь показал одну из реализаций, причём именно ту реализацию, которой он будет пользоваться.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[18]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 11.09.06 13:16
    Оценка: +1 -2
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ> Нельзя делать выводы о качественных сторонах продукта по его распространённости.


    если ты веришь, что тебя окружают одни идиоты и ты один на коне и весь в белом — то нельзя. Как же можно верить мнению идиотов, когда ты — самый умный и знаешь про это.
    Если же ты более реалистично относишься к своим умственным способностям, то надо понимать, что просто так ничего не получается. И распространенность — в том числе.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[30]: А как оно в Nemerle?
    От: Beam Россия  
    Дата: 11.09.06 13:17
    Оценка: +3 -2
    Здравствуйте, Klapaucius, Вы писали:

    K>Здравствуйте, Beam, Вы писали:


    B>>Я открыл статью Nemerle в Wikipedia, и я увидел, что та проблема, значение который Вы так пытаетесь преувеличить (незавершение работы метода, в который передан BlockClosure с возвратом), имеется и у Nemerle в макросах.


    K>Вы на верном пути. Есть мнение, что return где не появляется — везде вызывает проблемы, хотя и не одинаковой серьезности.

    K>В Nemerle можно вообще не прыгать. И, по умолчанию, возможности прыгать нет. По-моему, это не может не радовать. Но, видимо по той причине, что возможность попрыгать — это такие милые сердцу программистов грабельки, которые дороги как память, если очень хочется попрыгать все-таки можно. Для этого нужно подключить опредленное простарнство имен. Вот это мне, как раз, не очень нравится, хотя почему такую возможность оставили я понимаю.

    В Smalltalk тоже можно вообще не прыгать. Прыгание используется в тех же ситуациях, в которых оно используется в Java/C#. Заметьте, что и в них тоже можно не прыгать, а спокойненько дойти до конца метода.

    K>Непонятно мне другое. Почему возможность прыгнуть в Nemerle является оправдание возможности прыгнуть (причем, как я понял, гораздо дальше) в смолтоке?


    Вы поняли неправильно — прыгнуть дальше, чем в Nemerle не получится

    А насчет Вашего вопроса я скажу следующее. После того как в этом топике были продемонстрированы примеры "с прыганием" в Smalltalk, некоторые личности, не разобравшись с вопросом, эту технику признали опасной. И сообщили, что в современных языках таких проблем нет.

    Чтобы опровергнуть данное высказывание я и привел примеры с макросами Nemerle. Как видите, макросы тоже таят такую опасность. Но это же не повод отказываться от макросов в Nemerle? Конечно нет, ведь эта "проблема" не является проблемой (ну никто ж не заставляет Вас писать return где попало).

    K>Тут, конечно, были примеры по существу вопроса, как использование ^ помогает сократить код, но вот это вообще к делу отношения не имеет.


    Как раз имеет. Я, например, не знаю, зачем может понадобиться ^ внутри блоков кроме как в такой ситуации.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[27]: Оффтопик: Nemerle
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 11.09.06 13:33
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

    WH>Иди сюда и попробуй переписать SprintTyExpr в ОО стиле


    Не хочу. Это отбирает достаточно много сил. Я уж лучше "на пальцах" объясню.

    WH>Особенно мне интересно что ты будешь делать с подобными выкрутасами:


    Аналог именно этого не потребует даже визитора!

    Ты лучше покажи, как к этому "выкрутасу", положенному в либу, дописать пару своих кастомных вариантов.

    И кстати:
    WH> | TT.TExpr.Call (func /* PExpr */, parms /* list [Parm] */, _) =>
    Зачем нужен комментарий к параметрам?
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[31]: Оффтопик: Nemerle
    От: FR  
    Дата: 11.09.06 13:38
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Здравствуйте, FR, Вы писали:


    FR>>В лиспе не было


    IT>Теперь понятно. Придираемся к словам?


    Насчет придирок не понял, но ты же утверждал что вся функциональщина была в лиспе.

    FR>>вывода типов, ленивости, паттерн матчинга в общем очень многого из того что появилось в новых функциональных языках.


    IT>А где это всё было? Можешь перечислить? А мы потом посмотрим на время появления этих идей.


    Может где появилось?
    Насколько я знаю в Миранде и ML в 70 — 80 годы.

    FR>>Да и вообще лисп не чистый функциональный язык.


    IT>Да мне по барабану.


    мне тоже
    Re[29]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 11.09.06 13:44
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Здравствуйте, FR, Вы писали:


    IT>>>Что нибудь по существу?


    FR>>Так это и есть по существу, ты по сути предложил человеку неверное


    IT>В чём неверность?


    В определении по аналогии.
    Re[32]: Оффтопик: Nemerle
    От: IT Россия linq2db.com
    Дата: 11.09.06 13:44
    Оценка:
    Здравствуйте, FR, Вы писали:

    IT>>Теперь понятно. Придираемся к словам?

    FR>Насчет придирок не понял, но ты же утверждал что вся функциональщина была в лиспе.

    Так ты ещё и врун Я утверждал, что Лисп является тем функциональным ископаемым, на котором построены все остальные. Т.е. функциональщина вышла из Лиспа. Или это утверждение аналогично тому что ты мне приписываешь?

    IT>>А где это всё было? Можешь перечислить? А мы потом посмотрим на время появления этих идей.

    FR>Может где появилось?
    FR>Насколько я знаю в Миранде и ML в 70 — 80 годы.

    Т.е. прошло 25-35 лет
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[28]: Оффтопик: Nemerle
    От: IT Россия linq2db.com
    Дата: 11.09.06 13:46
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>И кстати:

    WH>> | TT.TExpr.Call (func /* PExpr */, parms /* list [Parm] */, _) =>
    ANS>Зачем нужен комментарий к параметрам?

    Не нужно будет когда сделаем интеграцию.
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[28]: Оффтопик: Nemerle
    От: WolfHound  
    Дата: 11.09.06 13:49
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Не хочу. Это отбирает достаточно много сил. Я уж лучше "на пальцах" объясню.

    Хоть на пальцах. Зоть на псевдокоде. Хоть как. Только чисто ОО решение.

    ANS>Аналог именно этого не потребует даже визитора!

    А что он потребует? Продемонстрируй на псевдокоде.

    ANS>Ты лучше покажи, как к этому "выкрутасу", положенному в либу, дописать пару своих кастомных вариантов.

    А зачем?

    ANS>Зачем нужен комментарий к параметрам?

    А что больше некчему прицепиться?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[21]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 11.09.06 14:01
    Оценка: -3
    Здравствуйте, Klapaucius, Вы писали:

    F>>>Вообще-то это высказываение как раз и было коррекцией — оно отлично дополняло высказывание предыдущего оратора, что "следование за большинством в наименьшей мере требует работы мозга", и как раз приводило систему в баланс — получая именно ситуацию "бездумного следования за кем-либо вообще".

    ГВ>>Какая ещё, сто тысяч микробайт в шлейф, система?! Следовать "общепринятым" терминам в противовес правильных — как раз показатель бездумности.

    K>Это просто пять баллов. [...]

    K>Как это все объяснить человеку, который говорит, что "истина всегда конкретна". Это тупик.

    Э... Обороты изящны. Но всё-таки, перечитайте ту дискуссию, на которую я ссылался. Пока что не хочу в очередной раз заниматься длинным разбором: что, кто и где сказал, и что это означает и какое впечатление производит. Я уже посвятил этому предостаточно букв. Моим оппонентам даже при отсутствии аргументации всегда найдётся что..., кхм, сказать. Пусть и во всё более художественной форме.

    K>Но я попробую. Вообще-то, терминология — это результат договоренности. В этом смыcле все термины, конечно, должны быть общепринятыми. Правильные они или нет — вопрос сложный. Определенно — это не исключено. Понятно — очень зависит от того, что понимается под словом "правильный". Мое мнение: учитывая что терминология существует для того, чтобы люди друг друга понимали, то правильный термин в системе из n обменивающихся информацией людей такой, который одинаково понимают больше чем n/2. Т.е. общеприянтый.


    На самом деле, "правильны" только те значения терминов, которые были им присущи при их появлении. В противном случае мы всегда сталкиваемся с необходимостью опрашивать n/2 на предмет их согласия с текущим значением терминов. Это не экономично. Соответственно, "правильное" значение термина нужно спрашивать не у большинства голосованием, а у его автора или, скажем так, у достаточно узкого круга. Истина таки да, всегда конкретна. Либо же значение термина должно параллельно уточняться, например, уполномоченными на то группами. В любом случае, круг тех, кто определяет значение термина должен быть достаточно узок, иначе мы превратим совершенно любую коллективную деятельность в бесконечные дебаты.

    Согласитесь, было бы удивительным переспрашивать у "большинства", например, что мы сегодня подразумеваем под термином "большинство"?

    K>Что касается каких-то фактических сведений о мире — тут все, конечно, сложнее.

    K>Общепринято, что Земля — круглая. Это не так. Земля имеет форму геоида. Общеприянтые понятия "круг" и "геоид" нетождественны.

    На бытовом уровне — да, шар. Но на бытовом уровне и Солнце вокруг Земли может вращаться. Но попробуй, докажи это тем, кто связан с навигацией.

    K>Общепринято, что вечный двигатель первого рода невозможен. Это действительно так (с очень хорошей вероятностью -> 1). Означает ли это, что перпетуум-мобилистов зажимает тупое большинство?


    Нет. Это означает, что в даном случае большинство более или менее усвоило законы физики.

    K>В большинстве случаев все упирается в договоренность. Кое-что можно доказать, но в рамках системы, непротиворечивость которой невозможно доказать в принципе. Что-то можно проверить на опыте (впрочем, доказательстов в этом случае будет иметь гм... статистический характер. В конце концов, вопросы в науке решаются не голосованием людей, а гы-гы голосованием экспериментов)


    Это ещё что такое: голосование экспериментов?

    ГВ>>В таком контексте упоминание меньшинства в негативном смысле как раз указывает на то, что надо следовать за большинством, даже если оно поставило всё с ног на голову.


    K>

    K>Не надо додумывать за автора, что он собирался сказать, что он мог сказать, что он подумал и что мог бы подумать, но сразу не собразил.

    K>Так говорил кхм... Геннадий Васильев.

    Я и не додумывал за автора. Я озвучил впечатление, которое произвели его слова и полагаю, что не сильно промахнулся. Нехай автор лучше формулирует свои мысли, дабы не. Коли уж он хотел сказать что-то другое.

    F>>>Предыдущий оратор из этого высказывания взял только часть. Это называется — некорректное уточнение.

    ГВ>>Не-а. АК всё совершенно правильно сказал. Именно большинство, именно бездумное следование и именно размахивание "общепринятым" как показатель этой самой бездумности.

    K>Вот он, образ врага! Скифы, азиаты. Их много. Слышится ржание их коней. Размахивают. Голова — чтобы в нее есть.

    K>Подтягивают к стенам нашей цитадели осадные ветряные мельницы на колесах.

    K>Нас мало — понятно, что мы лучше. Правда, тут главное не ошибиться и не оказаться не в том хвосте нормального распределения.


    Ах, сколь витиеваты слова, непонятные слуху простого программиста. Я прямо слышу победное ржание сфероконей и чую ммм... смрад кипящей смолы, которую льют со стен осаждённые. Если бы ещё это имело какое-то отношение к делу.

    ГВ>>Я понял в чём прикол. Не надо додумывать за автора, что он собирался сказать, что он мог сказать, что он подумал и что мог бы подумать, но сразу не собразил. Вот что было сказано, то и стало объектом обсуждения.

    K>Интересно, обстоятельно, респектабельно. Хоть сейчас на скрижали. Жаль только, что это, похоже, принцип на экспорт, а не для внутреннего пользования.

    Да, к сожалению, во "внутреннем пользовании" очень часто приходится прибегать к додумыванию. Иначе многих просто невозможно понять.

    K>Впрочем, воспринимать продукт творчества любого автора без некоторой доли фантазии — совершенно невозможно. Ведь существует же недоговоренность. Всегда. Любые слова вырваны из контекста, который у автора в голове и нам совершенно не известен.


    Весь контекст доступен по приведённой мною ссылке. Прочтите, не пожалеете.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[29]: Оффтопик: Nemerle
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 11.09.06 14:04
    Оценка: :)
    Здравствуйте, WolfHound, Вы писали:

    ANS>>Аналог именно этого не потребует даже визитора!

    WH>А что он потребует? Продемонстрируй на псевдокоде.

    Потребует 1-го (одного) виртуального метода под названием prettyPrint принимающего 1 (один) параметр — поток вывода и классы в количестве соответсвующем количеству матчей. Или тебя пугает необходимость создавать классы в ОО программе?

    ANS>>Ты лучше покажи, как к этому "выкрутасу", положенному в либу, дописать пару своих кастомных вариантов.

    WH>А зачем?

    Ты ж отменя чего хочеш, а я от тебя хочу чего-то в замен. Я правильно понимаю из твоего ответа, что это не возможно в принципе?
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[24]: Оффтопик: Nemerle
    От: IT Россия linq2db.com
    Дата: 11.09.06 14:25
    Оценка: 3 (1) +1
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    IT>>Если преобразовать этот код в C#, то мы получим примерно следующее (я попытаюсь записать в один if):


    ANS>И ты, Брут
    Автор: Vermicious Knid
    Дата: 20.02.06
    .


    И я. Я тебе даже больше скажу. Пару раз при работе надо интеграцией у меня был равноценный выбор — писать код на шарпе или на N. Начинал я это делать на шарпе, т.к. интеллисенс и прочее. Через пять минут плевал на это всё и переносил код в проект на Немерле.

    IT>>Желающие могут переписать это на свой лад и даже поприменять разные паттерны, но боюсь что более компактного кода, чем на Nemerle не получится.


    ANS>Один раз уже пробовал &mdash; <b>получается</b>
    Автор: Andrei N.Sobchuck
    Дата: 21.02.06
    .


    Молодец! У тебя получилось лишь решить простую задачку другим способом. Но проблема в том, что на том занятии мы проходили не сложение, а умножение и начали демонстрацию сложных вещей с простых примеров. Поэтому, при условии 2 * 2 = 4, у тебя вышло не хуже: 2 + 2 = 4. Но проблемы начались бы уже при 2 * 3 = 6. Твоё решение было бы 2 + 2 + 2 = 6. А если 2 * 10?
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[30]: Оффтопик: Nemerle
    От: WolfHound  
    Дата: 11.09.06 14:35
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Потребует 1-го (одного) виртуального метода под названием prettyPrint принимающего 1 (один) параметр — поток вывода и классы в количестве соответсвующем количеству матчей. Или тебя пугает необходимость создавать классы в ОО программе?

    А можно чуток псевдокода, а то както все очень расплывчато.

    ANS>Ты ж отменя чего хочеш, а я от тебя хочу чего-то в замен. Я правильно понимаю из твоего ответа, что это не возможно в принципе?

    Так оно в данном случае нафиг не упало.
    Но если очень хочется то можно добавить один параметер в SprintTyExpr и одну строчку
          if (expr == null) append ("[[[NULL]]]") else
          if (user_handler(expr, ...)) { /*do noting*/ } else
          match (expr) {

    а использование будет както так
    SprintTyExpr(...,
        fun(expr, ...)
        {
            | TT.TExpr.Call (TT.TExpr.OpCode (name), [parm1, parm2, parm3], _) =>
                ...;
                true
            | _ => false
        }
        );
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[33]: Оффтопик: Nemerle
    От: FR  
    Дата: 11.09.06 15:27
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Здравствуйте, FR, Вы писали:


    IT>>>Теперь понятно. Придираемся к словам?

    FR>>Насчет придирок не понял, но ты же утверждал что вся функциональщина была в лиспе.

    IT>Так ты ещё и врун Я утверждал, что Лисп является тем функциональным ископаемым, на котором построены все остальные. Т.е. функциональщина вышла из Лиспа. Или это утверждение аналогично тому что ты мне приписываешь?


    Да ладно врун, или будем как одна парочка тут в софистике упражнятся?
    Вообще все языки вроде идут всего от трех веток первого автокода, фортрана и лиспа (правда про пролог и рефал забудем).
    Если я скажу что весь ООП идет от фортрана это будет по твоему верное утверждение?

    IT>>>А где это всё было? Можешь перечислить? А мы потом посмотрим на время появления этих идей.

    FR>>Может где появилось?
    FR>>Насколько я знаю в Миранде и ML в 70 — 80 годы.

    IT>Т.е. прошло 25-35 лет


    Ну и?
    Re[35]: А как оно в Nemerle?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 11.09.06 16:10
    Оценка:
    Здравствуйте, Beam, Вы писали:

    B>Что неудобно? Использовать try-finally при работе с ресурсами?


    Ага. Ужасно неудобно. Потому в C# и Nemerle это делается очень редко. Вместо этого используется using. Знаком с такой конкцепцией?

    B>Странные Вы вещи говорите, однако ...


    Только для тебя.

    B>И возвращаясь к теме. Так что надо делать в Nemerle, чтобы не натыкаться в макросах на продемонстрированные "грабли"?


    Использовать юсинг. Макросы тут правда не причем. Это надо делать влюбом коде в не зависимости от того генерируется он или нет.

    Выглядит это так:

    using (variable = GetSomeLockableResource())
    {
        UseSomeLockableResource(variable);
    } // Здесь ресурс совободится что бы не случилось.

    Реализуется это дело переписыванием кода с использованием try/finally, но выглядит куда как понятнее и кратче.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[25]: Оффтопик: Nemerle
    От: FDSC Россия consp11.github.io блог
    Дата: 11.09.06 16:55
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    Ну, и не надо забывать про то что Немерле многое взял у C# просто с целью быть более понятным для мэйнстрим-программистов которые как раз в основном работают на C#, С++ или Яве.

    А понятен он из-за этого гораздо хуже...
    Re[30]: Оффтопик: Nemerle
    От: Сергей Туленцев Россия http://software.tulentsev.com
    Дата: 11.09.06 17:11
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>Здравствуйте, IT, Вы писали:



    FR>>>Нет после лиспа уже было много вещей которых в нем нет и вряд ли уже будут.

    FR>>>И вообще пока мейнстрим будет давится и с отрыжками переваривать функциональщину, новое може появится совсем в другом месте

    IT>>Например? Из последнего появивщегося мне известно AOP. Но это не имеет отношения к функциональщине.


    FR>В лиспе не было вывода типов, ленивости, паттерн матчинга в общем очень многого из того что появилось в новых функциональных языках. Да и вообще лисп не чистый функциональный язык.


    Паттерн-мэтчинг прикручивается туда макросами. Как, впрочем, и AOP. Вывод типов ему без надобности, потому что это не статически типизированный язык. Про ленивость ничего не скажу, дабы не соврать ненароком.
    --
    Re[34]: Оффтопик: Nemerle
    От: IT Россия linq2db.com
    Дата: 11.09.06 17:22
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>Если я скажу что весь ООП идет от фортрана это будет по твоему верное утверждение?


    В контексте обсуждаемого вопроса меня это не интересует.

    IT>>Т.е. прошло 25-35 лет

    FR>Ну и?

    Ну и что нового могут найти очкарики в функциональном программировании, чтобы начать опять оправдыавть своё ничтожество?
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[31]: Оффтопик: Nemerle
    От: FR  
    Дата: 11.09.06 17:30
    Оценка: 1 (1) +2
    Здравствуйте, Сергей Туленцев, Вы писали:

    FR>>В лиспе не было вывода типов, ленивости, паттерн матчинга в общем очень многого из того что появилось в новых функциональных языках. Да и вообще лисп не чистый функциональный язык.


    СТ>Паттерн-мэтчинг прикручивается туда макросами. Как, впрочем, и AOP. Вывод типов ему без надобности, потому что это не статически типизированный язык. Про ленивость ничего не скажу, дабы не соврать ненароком.


    Туда все руками относительно легко прикручивается в том числе и ленивость в виде задержаных вычислений и потоков, вообще туда и чисто императивное программирование также легко прикручивается. Только это не значит что в лиспе было все и даже уже есть то чего еще нет нигде Это просто значит что лисп очень гибкий язык
    Re[27]: Не нужность super return (нелок. возврата) [рассм. п
    От: FDSC Россия consp11.github.io блог
    Дата: 11.09.06 17:34
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Здравствуйте, FDSC, Вы писали:


    FDS>>И что, это намного хуже и сложнее? И наверняка быстрее работает, чем перехват повторно вызывающихся нелокальных возвратов.


    ANS>И первый и второй вариант твоей программы не правильные. У тебя и там и там 2 ошибки в коде и 2 ошибки в дизайне. Что на на таких примерах можно продемонстрировать я не понимаю.


    Я думаю, в не такой тупой, как компьютер и можете сообразить, что там имелось ввиду. Что касается ошибок, то если вы заявляете, что они есть (они действительно есть), наверное их стоит описывать и показать, что я неправ.
    Re[35]: Оффтопик: Nemerle
    От: FR  
    Дата: 11.09.06 17:35
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Здравствуйте, FR, Вы писали:


    FR>>Если я скажу что весь ООП идет от фортрана это будет по твоему верное утверждение?


    IT>В контексте обсуждаемого вопроса меня это не интересует.


    Зря это же основопологающий вопрос

    IT>>>Т.е. прошло 25-35 лет

    FR>>Ну и?

    IT>Ну и что нового могут найти очкарики в функциональном программировании, чтобы начать опять оправдыавть своё ничтожество?


    Мне дела нет до очкариков

    Да напомни мы о чем вообще беседуем?
    Re[36]: А как оно в Nemerle?
    От: Beam Россия  
    Дата: 11.09.06 17:37
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, Beam, Вы писали:


    B>>Что неудобно? Использовать try-finally при работе с ресурсами?


    VD>Ага. Ужасно неудобно. Потому в C# и Nemerle это делается очень редко. Вместо этого используется using. Знаком с такой конкцепцией?


    Знаком. Синтаксический сахар.

    B>>И возвращаясь к теме. Так что надо делать в Nemerle, чтобы не натыкаться в макросах на продемонстрированные "грабли"?


    VD>Использовать юсинг. Макросы тут правда не причем. Это надо делать влюбом коде в не зависимости от того генерируется он или нет.


    Да я же говорю про другие грабли Пока что Вы избегаете давать ответ на мой вопрос. Посмотрите предыдущие посты. Вы пытаетесь уйти в сторону от обсуждения проблемы. Давайте не будем говорить о частностях. Смотрите шире.

    Пусть у нас есть макрос, с параметром body (код). И пусть этот параметр используется в середине макроса. Т.е. при развертывании макроса получится код:

        // выполняем какой-то код 1
        // здесь будет код $body
        // выполняем какой-то код 2

    Если передать в этот макрос код, внутри которого есть return , то код 2 выполнен не будет.


    Разве не эту проблему Вы увидели в блоках Smalltalk? Пока что я не услышал вразумительного ответа — все вокруг да около.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[36]: Оффтопик: Nemerle
    От: IT Россия linq2db.com
    Дата: 11.09.06 17:53
    Оценка: +1 :))) :)))
    Здравствуйте, FR, Вы писали:

    FR>Мне дела нет до очкариков


    FR>Да напомни мы о чем вообще беседуем?


    Мы про то, что пока мы тут состязаемся в острословии, очкарики найдут массу нового, всю её изучат и станут недосягаемо умнее.
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[21]: Насколько важен синтаксис языка?
    От: WolfHound  
    Дата: 11.09.06 18:14
    Оценка: +4
    Здравствуйте, Klapaucius, Вы писали:

    K>Нас мало — понятно, что мы лучше. Правда, тут главное не ошибиться и не оказаться не в том хвосте нормального распределения.

    Вот за это отдельное спасибо. Я плакал.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[37]: А как оно в Nemerle?
    От: WolfHound  
    Дата: 11.09.06 18:21
    Оценка: -1
    Здравствуйте, Beam, Вы писали:

    B>Разве не эту проблему Вы увидели в блоках Smalltalk? Пока что я не услышал вразумительного ответа — все вокруг да около.

    Тут дело в локальности.
    В случае с макросом весь код видно, а в случае со Smalltalk блок кода с нелокальным возвратом может уйти куда угодно в том числе попасть в другой поток... вот будут забавные глюки когда один поток неожиданно прирывает другой...0
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[38]: А как оно в Nemerle?
    От: FR  
    Дата: 11.09.06 19:29
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

    WH>Здравствуйте, Beam, Вы писали:


    B>>Разве не эту проблему Вы увидели в блоках Smalltalk? Пока что я не услышал вразумительного ответа — все вокруг да около.

    WH>Тут дело в локальности.
    WH>В случае с макросом весь код видно, а в случае со Smalltalk блок кода с нелокальным возвратом может уйти куда угодно в том числе попасть в другой поток... вот будут забавные глюки когда один поток неожиданно прирывает другой...0

    А разве что-то может помешать из макроса прихлопнуть другой поток?, я что-то не слышал про такие ограничения.
    Re[16]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 11.09.06 19:33
    Оценка:
    Здравствуйте, Курилка, Вы писали:

    Можно не цитировать все сообщение?

    VD>>Это я к тому, что главное в языке выразительность для программиста.


    К>А читать, значит, написанное мы не будем, так?


    А как ты понимаешь понятие "выразительность"? Чем оно по-твоему отличается от краткости?

    Выразительность и определяет насколько код понятен для человека.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[38]: А как оно в Nemerle?
    От: Beam Россия  
    Дата: 11.09.06 20:14
    Оценка: -1
    Здравствуйте, WolfHound, Вы писали:

    WH>Здравствуйте, Beam, Вы писали:


    B>>Разве не эту проблему Вы увидели в блоках Smalltalk? Пока что я не услышал вразумительного ответа — все вокруг да около.

    WH>Тут дело в локальности.

    Здесь уже говорилось, что возврат управления из блока осуществляется в тот контекст, в котором он был описан. Это и есть та локальность о которой Вы говорите. Но почему-то упоминание об этом и вызвало бурную дискуссию. В общем, все происходит в точности так же как и в макросах Nemerle.

    WH>В случае с макросом весь код видно, а в случае со Smalltalk блок кода с нелокальным возвратом может уйти куда угодно в том числе попасть в другой поток... вот будут забавные глюки когда один поток неожиданно прирывает другой...0


    В этом случае будет брошено исключение
    blockWithReturn := [^28].
    process := [:blockToRun | blockToRun value] newProcessWithArguments: (Array with: blockWithReturn).
    process resume.


    В этом примере создается новый процесс и в него передается параметр — блок, который надо выполнить. Мы передаем блок с возвратом (blockWithReturn), запускаем процесс и ... никаких забавных глюков не происходит, а появлется исключение CannotReturnError (Context cannot return).
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[30]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 11.09.06 23:03
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>>>Так это и есть по существу, ты по сути предложил человеку неверное


    IT>>В чём неверность?


    FR>В определении по аналогии.


    Блин, какая аналогия? Я лишь показал реализацию
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[24]: Насколько важен синтаксис языка?
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 12.09.06 03:10
    Оценка:
    Здравствуйте, FDSC, Вы писали:


    FDS>Банально


    FDS>public static void ForEach<T>(T root, Action<T> action)

    FDS> where T: IRecursible<T>
    FDS>{
    FDS> action(root);
    FDS> CRT Child = root.LoadFromDataBaseChildAndLock();
    FDS> foreach(T Child in root)
    FDS>{

    FDS> ForEach(Child, action);

    FDS>}
    FDS>Child.Unlock();
    FDS>}
    S>>[/c#]

    FDS>и уже ошибка

    Ниче не понял. Это ты зачем этот бред написал, прошу прощения? Во-первых, это ошибка компиляции. Во вторых, даже если ты ее поправишь, то за такой код можно сразу на выговор в личное дело нарваться. Поясняю:
    ForEach — это библиотечный метод. Он пишется ровно один раз и ровно в том виде, в котором я написал. Никаких LoadFromDatabaseChildAndLock в нем не может быть по определению.

    Все обращения к базе делаются в рамках реализации IEnumerable в T, а Unlock — в реализации IDisposable того, что возвращается из T.GetEnumerator(). Тогда все будет правильно, независимо от того, super или обычный return применен.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[26]: Не нужность super return (нелок. возврата) [рассм. п
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 12.09.06 03:10
    Оценка: -1
    Здравствуйте, FDSC, Вы писали:

    FDS>Т.е. вы предлагаете примерно так:

    Нет. Предлагаем срочно идти изучать семантику finally.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[19]: Насколько важен синтаксис языка?
    От: _rasta  
    Дата: 12.09.06 03:29
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    ГВ>> Нельзя делать выводы о качественных сторонах продукта по его распространённости.

    Д>если ты веришь, что тебя окружают одни идиоты и ты один на коне и весь в белом — то нельзя. Как же можно верить мнению идиотов, когда ты — самый умный и знаешь про это.
    Д>Если же ты более реалистично относишься к своим умственным способностям, то надо понимать, что просто так ничего не получается. И распространенность — в том числе.

    1. мдя, вы не романтик
    2. очень странно что в мир проходят не самые лучшие творения. и про картошку и про "элиту" тут уже писалось. осталось вспомнить только новомодную попсу. тоже популяна


    зы. да, я знаю... но без пространственных аналогий на кывт-е почему-то не флеймят
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[20]: Насколько важен синтаксис языка?
    От: Turtle.BAZON.Group  
    Дата: 12.09.06 04:21
    Оценка: -1
    Здравствуйте, eao197, Вы писали:

    E>Так гребут, что вынуждены делать бесплатную версию своей EiffelStudio чтобы привлечь новых разработчиков.

    E>Лет десять назад у них, вероятно, особых проблем-то и не было. А сейчас, на фоне распространенности Java (которая бесплатно есть на большем количестве платформ, чем Eiffel), агрессивного маркетинга C#, количества библиотек и фреймворков для Java и C#, количества IDE для Java/C#, количества документации/книг/учебных курсов, количества разработчиков, имеющих опыт разработки на Java/C#, перспективы у Eiffel-я, имхо, очень не важные.
    Сам язык от этого не страдает. Страдает его популярность, ну и nil с ним.

    E>Не зря же Мейер сейчас статейки пишет, что мол дешевые индусы и воссточные славяне оставят без работы дорогих американских разработчиков. Если только последние не возьмутся за ум и не начнут использовать "правильные" инструменты, резко повышающие их (разработчиков то есть)

    А индусы вообще всех порвут своей дешевизной. Что хотят, то и творят. Язык тут не при чем.

    E> производительность, то хана им. А правильным инструментом, естественно, является Eiffel Methodology + Eiffel Studio. Хотя чем Eiffel сейчас может конкурировать, например, с Java 5 + IDEA (Eclipse) лично я, например, не понимаю.

    Навороченность IDE может говорить о негибкости языка. Если они появились — значит, была потребность. Где их нет, то нет и соответствующей потребности.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[20]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 12.09.06 05:01
    Оценка:
    Здравствуйте, _rasta, Вы писали:

    _>1. мдя, вы не романтик


    да, я просто реалист

    _>осталось вспомнить только новомодную попсу. тоже популяна


    бессмысленно сравнивать сферу производства и сферу развлечений.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[21]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 12.09.06 05:34
    Оценка: -1
    Здравствуйте, Turtle.BAZON.Group, Вы писали:

    E>>Так гребут, что вынуждены делать бесплатную версию своей EiffelStudio чтобы привлечь новых разработчиков.

    E>>Лет десять назад у них, вероятно, особых проблем-то и не было. А сейчас, на фоне распространенности Java (которая бесплатно есть на большем количестве платформ, чем Eiffel), агрессивного маркетинга C#, количества библиотек и фреймворков для Java и C#, количества IDE для Java/C#, количества документации/книг/учебных курсов, количества разработчиков, имеющих опыт разработки на Java/C#, перспективы у Eiffel-я, имхо, очень не важные.
    TBG>Сам язык от этого не страдает. Страдает его популярность, ну и nil с ним.

    В данно случае страдает не популярность. В данном случае его восстребованность стремиться к нулю. Я вот, например, посмотрел на него, и прошел мимо. Т.е. еще один потенциальный проект прошел мимо них. И, сдается мне, не только со мной такая ситуация.

    А причина в том, что сейчас не время закрытых и платных универсальных языков. И Eiffel-евцы, похоже, поняли это слишком поздно.

    E>>Не зря же Мейер сейчас статейки пишет, что мол дешевые индусы и воссточные славяне оставят без работы дорогих американских разработчиков. Если только последние не возьмутся за ум и не начнут использовать "правильные" инструменты, резко повышающие их (разработчиков то есть)

    TBG>А индусы вообще всех порвут своей дешевизной. Что хотят, то и творят. Язык тут не при чем.

    Это нужно Мейеру рассказать, а то он пребывает в уверенности, что если дать дорогим разработчикам дорогой инструмент, то они будут рвать дешовую рабочую силу как промакашку.

    E>> производительность, то хана им. А правильным инструментом, естественно, является Eiffel Methodology + Eiffel Studio. Хотя чем Eiffel сейчас может конкурировать, например, с Java 5 + IDEA (Eclipse) лично я, например, не понимаю.

    TBG>Навороченность IDE может говорить о негибкости языка. Если они появились — значит, была потребность. Где их нет, то нет и соответствующей потребности.

    Так в том то и фокус, что EiffelStudio как раз претендует на звание продвинутой IDE. Но для Eiffel-я она одна такая (хотя может быть в VisualEiffel есть еще что-нибудь, но она только Windows-ная). А для той же Java подобных IDE (если не круче) гораздо больше. И дешевле.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[21]: Насколько важен синтаксис языка?
    От: Трурль  
    Дата: 12.09.06 05:35
    Оценка: 1 (1) +1
    Здравствуйте, Дарней, Вы писали:

    Д>бессмысленно сравнивать сферу производства и сферу развлечений.


    Не менее бессмысленно переносить критерии успеха из сферы развлечений на сферу производства..
    Re[22]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 12.09.06 05:39
    Оценка:
    Здравствуйте, Трурль, Вы писали:

    Т>Не менее бессмысленно переносить критерии успеха из сферы развлечений на сферу производства..


    а кто это делал?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[23]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 12.09.06 05:54
    Оценка: 18 (2) +1 -1 :))) :))) :))) :)
    Здравствуйте, Дарней, Вы писали:

    Д>Здравствуйте, Трурль, Вы писали:


    Т>>Не менее бессмысленно переносить критерии успеха из сферы развлечений на сферу производства..


    Д>а кто это делал?


    "Тот, кто первым крикнул из ветвей — мейнстрим большой, ему видней".
    --
    Бесчастнов Евгений
    Re[24]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 12.09.06 06:19
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

    Т>>>Не менее бессмысленно переносить критерии успеха из сферы развлечений на сферу производства..


    Д>>а кто это делал?


    EB>"Тот, кто первым крикнул из ветвей — мейнстрим большой, ему видней".


    а при чем здесь сфера развлечений?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[31]: Оффтопик: Nemerle
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 12.09.06 07:53
    Оценка: -1
    Здравствуйте, WolfHound, Вы писали:

    WH>Здравствуйте, Andrei N.Sobchuck, Вы писали:


    ANS>>Потребует 1-го (одного) виртуального метода под названием prettyPrint принимающего 1 (один) параметр — поток вывода и классы в количестве соответсвующем количеству матчей. Или тебя пугает необходимость создавать классы в ОО программе?

    WH>А можно чуток псевдокода, а то както все очень расплывчато.

    class UnaryOperator
        prettyPrint(outputStream) {
            outputStream
                .append(name)
                .append('(')
                .append(parm)
                .append(')')
        }

    Ы?

    WH>а использование будет както так

    А можно на словах описать, а то как то малопонятно?
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[28]: Не нужность super return (нелок. возврата) [рассм. п
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 12.09.06 08:07
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS> их стоит описывать и показать, что я неправ.


    Всё уже сказано
    Автор: Sinclair
    Дата: 12.09.06
    .
    Но могу пояснить и я. Что касается ошибки кодирования, то твой код не безопасен по отношению к исключениям. Значит, если при вызове action (содержимым которого ты не управляеш!) вылетит исключение, то ты получиш что угодно. Начиная с утечек ресурсов, заканчивая дедлоками в самые разные моменты, например только под большой нагрузкой.

    То есть переделываем:
        try {
            foreach(T Child in root) {
                ForEach(Child, action);
            }
        }
        finally {
            rootChild.Unlock();
        }

    И теперь фразу "и уже ошибка" можно вычеркнуть.
    Что касается ошибки проектирования, то этот код — явный кандидат на using и IDisposable.
    Что касается моей фразы о двух ошибках, то мне показалось, из-за использования имени Child в наружном контексте и при итерации, что ты вызываеш Unlock в цикле. Про одно имя даже не пойму, если это просто небрежность, то это одно, но если стиль...
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[32]: Оффтопик: Nemerle
    От: WolfHound  
    Дата: 12.09.06 09:42
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>
    ANS>class UnaryOperator
    ANS>    prettyPrint(outputStream) {
    ANS>        outputStream
    ANS>            .append(name)
    ANS>            .append('(')
    ANS>            .append(parm)
    ANS>            .append(')')
    ANS>    }
    ANS>

    ANS>Ы?
    Что Ы? А работать это как будет? Как оно поймет что это
    TT.TExpr.Call (TT.TExpr.OpCode (name), [parm], _) =>

    Нужно скормить этому классу?
    Только не говори что нужно править AST. Это не приемлемо ибо получится редкостный бардак.
    Главная прелесть match'а в том что он внешний по отношению к AST.

    WH>>а использование будет както так

    ANS> А можно на словах описать, а то как то малопонятно?
    А что тут может быть не понятно? SprintTyExpr получает еще и замыкание в которое скармливают очередное выражение. Если замыкание его обработало то ничего не происходит, а если нет то начинается обработка при помощи того match что в SprintTyExpr.
    Внутри замыкания находится такойже match только с пользовательскими вариантами. Есдинственное отличие в том что match в замыкании возвращает true если отработал и false если нет.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[39]: А как оно в Nemerle?
    От: WolfHound  
    Дата: 12.09.06 09:42
    Оценка: :)
    Здравствуйте, Beam, Вы писали:

    B>Здесь уже говорилось, что возврат управления из блока осуществляется в тот контекст, в котором он был описан. Это и есть та локальность о которой Вы говорите. Но почему-то упоминание об этом и вызвало бурную дискуссию. В общем, все происходит в точности так же как и в макросах Nemerle.

    Еще раз в Nemerle все происходит внутри одной функции. Нет переходов граници функции. Нельзя передать в функцию высшего порядка замыкание которое может вернуть управление не спросив у этой функции.

    B>В этом случае будет брошено исключение

    B>
    B>blockWithReturn := [^28].
    B>process := [:blockToRun | blockToRun value] newProcessWithArguments: (Array with: blockWithReturn).
    B>process resume.
    B>


    B>В этом примере создается новый процесс и в него передается параметр — блок, который надо выполнить. Мы передаем блок с возвратом (blockWithReturn), запускаем процесс и ... никаких забавных глюков не происходит, а появлется исключение CannotReturnError (Context cannot return).

    А ты уверен что создающий процесс не успел завершится? Поставь там бесконечный цикл.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[33]: Оффтопик: Nemerle
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 12.09.06 10:04
    Оценка: -1
    Здравствуйте, WolfHound, Вы писали:
    WH>Что Ы? А работать это как будет? Как оно поймет что это
    WH>
    WH>TT.TExpr.Call (TT.TExpr.OpCode (name), [parm], _) =>
    WH>

    WH>Нужно скормить этому классу?
    WH>Только не говори что нужно править AST.

    Не нужно ничего править, потому что дерево из узлов с такими классами должно быть сформировано парсером. Например, объект класса UnaryOperator это узел у которого есть поле "имя" и ссылка на очередной узел.

    WH>А что тут может быть не понятно? SprintTyExpr получает еще и замыкание в которое скармливают очередное выражение. Если замыкание его обработало то ничего не происходит, а если нет то начинается обработка при помощи того match что в SprintTyExpr.


    Это не расширение, а кривой костыль.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[22]: Насколько важен синтаксис языка?
    От: Turtle.BAZON.Group  
    Дата: 12.09.06 10:07
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Это нужно Мейеру рассказать, а то он пребывает в уверенности, что если дать дорогим разработчикам дорогой инструмент, то они будут рвать дешовую рабочую силу как промакашку.


    А дорогим разработчикам дай любой инструмент — и онои будут рвать девевую рабочую силу. И вообще, дорогие разработчики могут позволить себе выбирать тот инструмент, который необходим для решения той или иной задачи.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[23]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 12.09.06 10:33
    Оценка: +1 -1 :)
    Здравствуйте, Turtle.BAZON.Group, Вы писали:

    TBG>А дорогим разработчикам дай любой инструмент — и онои будут рвать девевую рабочую силу. И вообще, дорогие разработчики могут позволить себе выбирать тот инструмент, который необходим для решения той или иной задачи.


    Вот интересно. Пусть дорогой разработчик на Java в Москве получает $3K в месяц. И требуется ему писать софт, который работает под Windows, Linux, Solaris и MacOS. Затраты на него будут составлять $3K в месяц + $500 на приобретение IDEA. JDK для всех этих платформ бесплатен.

    Теперь пусть у нас есть такой же дорогой разработчик на Eiffel. Мы будем платить ему теже $3K в месяц. + $4799 (EiffelStudio for Windows) + $4799 (Linux) + $7999 (Solaris) + $4799 (MacOS). И того накладные расходы на одного Eiffel разработчика будут составлять $22396. Т.е. это зарплата нашего разработчика за $7.5 месяцев. Не проще ли на это время нанять еще одного дорогого Java разработчика?

    А если мы нанимаем разработчиков не в Москве, а в провинции или, к примеру, на Украине или в Белоруссии? В каком-нибудь Белорусском областном центре вы можете купить за $1500 классного специалиста с потрохами (и учитывая разницу в стоимости жизни в Белоруссии и в Москве, $1.5K будет сравнима с $3K в Москве). При таких раскладах стоимость только средств разработки для Eiffel-я будет составлять больше годовой зарплаты одного хорошего специалиста.

    А теперь вопрос: можете ли вы перечислить преимущества, которые Eiffel может дать разработчикам (не важно дешевым или дорогим) по сравнению с C# или Java? Настолько важные преимущества, которые окупили бы стоимость Eiffel-евских средств разработки?

    И еще один вопрос в догонку: что же делать компании, которая вложила такие деньги в средства разработки и обучение специалистов, выпустила кроссплатформенный продукт на Eiffel (под Windows, Linux, Solaris, MacOS). А затем бах -- нужно его портировать под UP-UX и AIX.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[40]: А как оно в Nemerle?
    От: Beam Россия  
    Дата: 12.09.06 11:00
    Оценка: -1
    Здравствуйте, WolfHound, Вы писали:

    B>>Здесь уже говорилось, что возврат управления из блока осуществляется в тот контекст, в котором он был описан. Это и есть та локальность о которой Вы говорите. Но почему-то упоминание об этом и вызвало бурную дискуссию. В общем, все происходит в точности так же как и в макросах Nemerle.

    WH>Еще раз в Nemerle все происходит внутри одной функции. Нет переходов граници функции. Нельзя передать в функцию высшего порядка замыкание которое может вернуть управление не спросив у этой функции.

    Я говорил про макросы, а не про замыкания.

    B>>В этом примере создается новый процесс и в него передается параметр — блок, который надо выполнить. Мы передаем блок с возвратом (blockWithReturn), запускаем процесс и ... никаких забавных глюков не происходит, а появлется исключение CannotReturnError (Context cannot return).

    WH>А ты уверен что создающий процесс не успел завершится?

    Уверен.

    WH>Поставь там бесконечный цикл.


    Происходит то же самое.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Best regards, Буравчик
    Re[16]: Насколько важен синтаксис языка?
    От: vdimas Россия  
    Дата: 12.09.06 11:11
    Оценка: +2 -2 :)))
    Здравствуйте, Дарней, Вы писали:

    Д>Просто удивительно, но количество желающих применить ко мне аргументацию с позиций физической силы резко уменьшилось до нуля после года занятий в "качалке".

    Д>Как ты думаешь, в чем тут может быть дело?

    В неадекватном восприятии тобой окружающей действительности, ИМХО. Считай, что тебе просто везло, ибо "быкующие" при случае отхватывают гораздо круче "обычных", и лечатся потом дольше. Такой закон жизни, фиг его знает, с чем это связано.


    ----------
    Да, кстати, год в качалке — это не аргумент даже в подобного рода пенисометрии. Если бы как аргумент шло лет 15 занятий каким-нить единоборством и первые места на соревнованиях по области, или хотя бы по городу, было бы прикольней. Но опять же, странный закон жизни проявляется в том, что эти люди никогда не хамят и нарываются первыми, в отличие от тех, кто потратил год на качалку.
    Re[34]: Оффтопик: Nemerle
    От: WolfHound  
    Дата: 12.09.06 11:21
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Не нужно ничего править, потому что дерево из узлов с такими классами должно быть сформировано парсером. Например, объект класса UnaryOperator это узел у которого есть поле "имя" и ссылка на очередной узел.

    Те парсер должен сформировать дерево которое удобно печатать? А ты в курсе что этот код находится в разделе misc те этого кода может и не быть и все будет работать?
    Но прикол в том что у нас еще есть генератор кода которому начхать на то что к нему пришло унарный оператор или функция с одним параметром. Ты можешь возразить что у нас есть встроеные типы и их нужно по особенному обрабатывать в MSIL'е но на это есть убойный аргумент: А зачем о встроеных типах знать парсеру, типизатру, макросам...? Не забываем про пользовательские операторы... Зачем на этих очень не простых стадиях лишнии детали?

    И все это нужно засунуть в АСТ? И кстати в какое АСТ? их там несколько...

    Короче чистый ОО тут ни разу не рулит.

    ANS>Это не расширение, а кривой костыль.

    Отрицание... любимый прием пуристов... Великий магистр оберона темже самым занимается.
    Аргументы будут?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[23]: Насколько важен синтаксис языка?
    От: WolfHound  
    Дата: 12.09.06 11:24
    Оценка: +3
    Здравствуйте, Turtle.BAZON.Group, Вы писали:

    TBG>А дорогим разработчикам дай любой инструмент — и онои будут рвать девевую рабочую силу. И вообще, дорогие разработчики могут позволить себе выбирать тот инструмент, который необходим для решения той или иной задачи.

    Это зависит от задачи.
    Есть задачи на хоторых просто не рентабельно использовать дорогих разработчиков.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[17]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 12.09.06 11:27
    Оценка: -1
    Здравствуйте, vdimas, Вы писали:

    V>В неадекватном восприятии тобой окружающей действительности, ИМХО. Считай, что тебе просто везло, ибо "быкующие" при случае отхватывают гораздо круче "обычных", и лечатся потом дольше. Такой закон жизни, фиг его знает, с чем это связано.


    Ты делаешь слишком далеко идущие выводы, не имея никакой информации. Лучше бы побеспокоился о своей собственной адекватности, вместо того чтобы пытаться учить других.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[29]: Насколько важен синтаксис языка?
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 12.09.06 11:32
    Оценка: 2 (2) +1 :)
    Здравствуйте, VladD2, Вы писали:

    VD>Синклер, уточни, плиз, с чем ты не согласен? Тебе нравится идея организации логики на исключениях?

    Я не согласен ровно с тем абзацем, который ты написал. "Неверная передача управления" приведет к вылету исключения, поэтому пассаж про ее отличие от исключений — неверен. Вот и все.
    А все остальные передачи управления — верные, и ничуть не хуже вот такого кода
    bool SearchForItem(IEnumerable<MyClass> items)
    {
        foreach(MyClass item in items)
        {
            if (item.A = 5)
                return true; // нашли! нелокальный возврат.
        }
        return false;
    }


    Что, этот код чреват проблемой? Плохо читается? А ведь мы блин передали управление поперек скобочек!
    Вот "кошерный" вариант:

    bool SearchForItem(IEnumerable<MyClass> items)
    {
      bool result = false;
        foreach(MyClass item in items)
        {
            if (item.A = 5)
            {
                result = true; // нашли! 
                break; // локальный возврат
            }
        }
        return result;
    }


    Что, лишние две строчки сильно улучшили читаемость? Нет? Просто в ST авторы решили, что метод ForEach ничуть не хуже встроенного оператора foreach. И в нем тоже полезно иметь возможность сделать return. Да, потенциально это ведет к некоторым проблемам. Но, во-первых, злоупотребить можно и оператором +, а во-вторых, все же меры по борьбе приняты — как минимум попытка вернуть управление в разрушенный контекст ведет к defined behavior, который вполне согласуется со здравым смыслом.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[23]: Насколько важен синтаксис языка?
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 12.09.06 11:32
    Оценка: +1
    Здравствуйте, Дарней, Вы писали:

    Д>это я к тому, что хорошего бизнесмена (менеджера) найти еще посложнее, чем хорошего программиста. Поэтому странновато называть хорошего бизнесмена плохим программистом

    Вообще, чтобы продукт стал успешным, необходим правильный баланс между желанием пользователей и возможностями технологии.
    Одно без другого не существует. Невозможно разрабатывать продукты, не представляя себе потребностей рынка — а понимание потребностей рынка (причем не тех, что были 5 лет назад, и даже не тех, которые есть сейчас, а тех, которые возникнут на момент окончания разработки) — это и есть основной талант бизнесмена. Конечно, еще полезно уметь управлять ресурсами, но это в целом более-менее хорошо изученная область, которая поддается не талантам, а банальному изучению. Огромное количество MBA, ежегодно выпускающихся из разнообразных бизнес-школ, тому подтверждение.

    Но и понимание того, что вообще можно сделать, т.е. знание технологической базы, тоже необходимо для успешности бизнеса. Есть масса вещей, востребованных на рынке — вечные двигатели, машины времени, искусственный интеллект, силовое поле, — которые нереализуемы. Как минимум сейчас. А может быть реализуемы, но настолько дорого, что рынок пока не может себе этого позволить.
    Обычно мы подразумеваем под талантливым программистом того, кто в состоянии достаточно эффективно использовать существующие возможности.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[21]: Насколько важен синтаксис языка?
    От: vdimas Россия  
    Дата: 12.09.06 11:50
    Оценка: -1
    Здравствуйте, IT, Вы писали:


    V>>А в Немерле 80% кода будет оптическим обманом, типа как в современной С++ программе.


    IT>Откуда такая уверенность? Опять макросы? Зря переживаешь. Я вот за месяц интенсивной и плодотворной работы с N не написал ещё ни одного. Но зато вижу, что те задачи которые я решаю на C# решались бы на порядок сложнее и соответственно привели бы к более сложному, непонятному и запутанному коду.


    Я лично ничуть про макросы не переживаю. Сам на С++ использую на всю катушку, невзирая на всякие "рекомендации", ибо если есть удобный инструмент — почему бы не воспользоваться? Макросы добавляют в код элементы управляемости и настраиваемости, макросы позволяют порождать из одного и того же исходника семантические разные программы. Сотни раз слышал и тут в т.ч. что эта фича опасна, но для меня она чертовски удобна. Как говорят врачи — всё можно, если осторожно.

    Не сомневаюсь, что для тебя Nemerle удобен. Но вот у меня тут скоро встанет вопрос, какую технологию избрать для следующего проекта. Как ты думаешь, я рискну применить его в своей команде? Тут народ еще даже анонимные делегаты из C#2.0 боится юзать и спотыкается на иерархии ограничений генериков... А ты говоришь — Немерле
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[19]: Насколько важен синтаксис языка?
    От: vdimas Россия  
    Дата: 12.09.06 11:50
    Оценка:
    Здравствуйте, fmiracle, Вы писали:


    F>Если некто осуждает бездумное следование за меньшинством, это еще не значит, что он призывает бездумно следовать за большинством. Он может, например, призывать воспользоваться своей головой и самому решить, куда двигаться...


    Плохо, когда обсуждение заходит далеко, ибо теряется связь с начальным контекстом. Кто-то применил эпитет, и через пару постов эпитет оброс смыслом.

    Никакого буздумного следования за меньшинством не было, разумеется. Тем более, что речь идет о более сложных в применении технологиях. Откуда там взяться "бездумству". На такие шаги можно решиться лишь все тщательно взвесив предварительно.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[31]: А как оно в Nemerle?
    От: Klapaucius  
    Дата: 12.09.06 12:01
    Оценка: 29 (1) +1
    Здравствуйте, Beam, Вы писали:

    B>В Smalltalk тоже можно вообще не прыгать.


    Замечательно.

    B>Прыгание используется в тех же ситуациях, в которых оно используется в Java/C#. Заметьте, что и в них тоже можно не прыгать, а спокойненько дойти до конца метода.


    Вообще-то нет. Java и C# — statement-based, так что return там пишется в любом случае, если ф-я что-то возвращает.
    т.е. мы не можем написать
    { expr }

    но всегда обязаны писать
    { return expr }

    Хотя в данном случае в прыганье нет необходимости.
    (в C# 3.0, правда, появились лямбда-выражения, но не суть важно.)
    Важно то, что в анонимном методе в С# return имеет совсем не ту семантику, что ^ в блоке кода в смолток.
    для того, чтобы прыгнуть из анонимного метода как в смолтоке нужно бросать исключение.
    Поэтому, нельзя говорить, что прыганье и там и там испоьзуется в одних и тех же ситуациях.

    K>>Непонятно мне другое. Почему возможность прыгнуть в Nemerle является оправдание возможности прыгнуть (причем, как я понял, гораздо дальше) в смолтоке?


    B>Вы поняли неправильно — прыгнуть дальше, чем в Nemerle не получится


    Ах да, я и забыл, что немерле — это воплощение зла. Впрочем, прыгнуть неограниченно далеко можно в любом языке, где есть исключения, но именно с помощью исключений. Прыгнуть в немерле штатными средствами вообще не получится, потому, что этот язык expression-based.
    Никакого goto даже в ограниченной return-модификации там нет.
    Даже если вы из настальгических соображений подключите Nemerle.Imperative (а такое желание, по моему убеждению надо в себе безжалостно давить),
    то
    { return expr }

    развернется во что-то вроде
    {
        return : {
            return(expr)
        }
    }

    т.е. видно, что это все равно выражение, а не передача управления.

    B>А насчет Вашего вопроса я скажу следующее. После того как в этом топике были продемонстрированы примеры "с прыганием" в Smalltalk, некоторые личности, не разобравшись с вопросом, эту технику признали опасной.


    Насчет не разобравшихся с вопросом — это Ваше мнение.

    B>И сообщили, что в современных языках таких проблем нет.


    Это не так. В современных языках такие проблемы есть.

    B>Чтобы опровергнуть данное высказывание я и привел примеры с макросами Nemerle. Как видите, макросы тоже таят такую опасность.


    Не полностью аналогичную. Вы не можете передать куда-то макрос-функцию, так как это не FCO. И это хорошо, кстати.
    Да и вообще, компилятор, вообще говоря, должен указывать на выражение, значение которого не возвращается.

    B> Но это же не повод отказываться от макросов в Nemerle?


    Возможно, это не повод, да.

    B>Конечно нет, ведь эта "проблема" не является проблемой


    НО проблема проблемой таки является. Я вообще не понимаю, как тут одно из другого следует.
    ПОнятно, что в ряде случаев проблемными средствами можно продолжать пользоваться. Однако не стоит отрицать проблемность этих средств.

    И все равно аргументация более чем странная. Если Васе поставили тройку — это что, правдание моей двойке?

    B>(ну никто ж не заставляет Вас писать return где попало).


    Это не аргумент. Также можно и вычисляемый goto оправдывать. Используйте где надо, а не где ненадо — и все будет в порядке.

    Могу я установить контракт на параметр принимающий блок кода, чтобы запретить передачу блока кода с ^, и чтобы это можно было проверить статически?

    K>>Тут, конечно, были примеры по существу вопроса, как использование ^ помогает сократить код, но вот это вообще к делу отношения не имеет.

    B>Как раз имеет. Я, например, не знаю, зачем может понадобиться ^ внутри блоков кроме как в такой ситуации.

    Это, как мне кажется, проблема языков в "простым логичным синтаксисом". Получается, что для решения двух с половиной задач добавляется багофича, которая в двух с половиной случаях фича — а во всех остальных — баг.
    Уж лучше досыпать немного сахарку.
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re[22]: Насколько важен синтаксис языка?
    От: Klapaucius  
    Дата: 12.09.06 12:01
    Оценка: +1
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Э... Обороты изящны.


    Вы мне льстите.

    ГВ>Но всё-таки, перечитайте ту дискуссию, на которую я ссылался.


    Уже сделано.

    ГВ>Пока что не хочу в очередной раз заниматься длинным разбором: что, кто и где сказал, и что это означает и какое впечатление производит. Я уже посвятил этому предостаточно букв.


    Не утруждайте себя длинным разбором. Вот короткий:
    Это было столкновение Википедии с евангелием от Алана Кэя. Которое закончилось, понятно, тем, что адепт Кэя высказался в том смысле что следование большинству интеллекта не требует, причем, что очень важно, в контексте дискуссии об общепринятости терминологии. Понятно даже и ежу, что общепринятость не критерий истины в общем случае. Но необщепринятая терминология не решает поставленные перед ней задачи, о чем я и писал. Понятно? В сообществе смолтокеров их терминология адекватна — в другом сообществе нет. И то, что терминологией владеют не 100 человек, а 10 — это не плюс, а минус такой терминологии.

    ГВ>На самом деле, "правильны" только те значения терминов, которые были им присущи при их появлении.


    Вечер юмора. Выходит, яблоко можно правильно назвать только на языке Адама и Евы? Вот умора! Да сам труд, который потребуется для исторических исследований, направленных на выяснение первого автора термина настолько "не экономичен", что дальше можно и не обсуждать.

    ГВ>В противном случае мы всегда сталкиваемся с необходимостью опрашивать n/2 на предмет их согласия с текущим значением терминов. Это не экономично. Соответственно, "правильное" значение термина нужно спрашивать не у большинства голосованием, а у его автора или, скажем так, у достаточно узкого круга.


    После этого останется проблема ознакомления большинства с этой терминологией. Вы ее в экономические подсчеты включили?
    На самом деле так часто и делается. Вся система образования работает в основном на то, чтобы общепринятая терминология оставалась общепринятой.

    ГВ> Истина таки да, всегда конкретна.


    Господи, ну нельзя же так увлекаться Ильичем в наше суровое время. "Как получишь галстук — береги его, он же с красным знаменем цвета одного" и так далее. На самом деле, как это не печально, быть может, никакой истины не существует. Есть вероятность для еденицы и статистика для множества едениц. И все! Самое лучшее, что мы можем себе позволить, это средняя темпмература по больнице.

    ГВ>Либо же значение термина должно параллельно уточняться, например, уполномоченными на то группами. В любом случае, круг тех, кто определяет значение термина должен быть достаточно узок, иначе мы превратим совершенно любую коллективную деятельность в бесконечные дебаты.


    Мы спорим по процедурному или по принципиальному вопросу? Какое отношение к делу имеет способ, при помощи которого мы распространим терминологию на n/2 + 1 ? Главное, что пока мы это не сделаем — все что мы будем иметь, это даже не дебаты, а вавилонское столпотворение.

    K>>Что касается каких-то фактических сведений о мире — тут все, конечно, сложнее.

    K>>Общепринято, что Земля — круглая. Это не так. Земля имеет форму геоида. Общеприянтые понятия "круг" и "геоид" нетождественны.

    ГВ>На бытовом уровне — да, шар.


    Если бы! На бытовом уровне люди слабо чувствуют разницу между шаром и кругом.

    ГВ> Но на бытовом уровне и Солнце вокруг Земли может вращаться. Но попробуй, докажи это тем, кто связан с навигацией.


    Тут вроде был огромный флейм по поводу того, имеет ли значение что вокруг чего вращается? Я его, правда не нашел. Очень показательный пример, кстати. Особенно если у честь, что оба широко известных варианта — неправильные.

    K>>Общепринято, что вечный двигатель первого рода невозможен. Это действительно так (с очень хорошей вероятностью -> 1). Означает ли это, что перпетуум-мобилистов зажимает тупое большинство?


    ГВ>Нет. Это означает, что в даном случае большинство более или менее усвоило законы физики.


    Выходит, что мифическая тирания большинства это не во всех случаях тирания глупости? И наоборот тоже? Именно об этом я и говорю.

    K>>В большинстве случаев все упирается в договоренность. Кое-что можно доказать, но в рамках системы, непротиворечивость которой невозможно доказать в принципе. Что-то можно проверить на опыте (впрочем, доказательстов в этом случае будет иметь гм... статистический характер. В конце концов, вопросы в науке решаются не голосованием людей, а гы-гы голосованием экспериментов)

    ГВ>Это ещё что такое: голосование экспериментов?

    "гы-гы голосование экспериментов" — это шутка, основанная на том, что провести два одинаковых эксперимента с тождественным с какой угодно точностью результатом — невозможно. Но это средняя школа, седьмой класс. Стоит ли обсуждения?

    ГВ>Я и не додумывал за автора. Я озвучил впечатление, которое произвели его слова и полагаю, что не сильно промахнулся.


    С впечатлением вообще невозможно промахнуться, потому что впечатление много говорит о том, кто впечатляется, а не о том, что впечатляет. У людей обычно очень разные впечатления об одном и том же.

    ГВ> Нехай автор лучше формулирует свои мысли, дабы не. Коли уж он хотел сказать что-то другое.


    К этому надо стремится, но судить за неудачу не стоит. В конце концов, легче переплыть Атлантический океан по-собачьи, а потом изобрести эликсир вечной молодости чем сказать что-то нетривиальное так, чтобы ВСЕ поняли одинаково.

    K>>Вот он, образ врага! Скифы, азиаты. Их много. Слышится ржание их коней. Размахивают. Голова — чтобы в нее есть.

    K>>Подтягивают к стенам нашей цитадели осадные ветряные мельницы на колесах.
    ГВ>Ах, сколь витиеваты слова, непонятные слуху простого программиста. Я прямо слышу победное ржание сфероконей и чую ммм... смрад кипящей смолы, которую льют со стен осаждённые. Если бы ещё это имело какое-то отношение к делу.

    Самое прямое. Если на пальцах то:
    Мировосприятие через метафору борьбы сплющивает это самое мировосприятие до состояния амбразуры и обязательно ведет к ничем не оправданной элитаризации себя и своих единомышленников и варваризации оппонентов.

    NB: Людям и так друг друга понять не просто, а если еще и добрая воля необходимая для понимания отсутствует — это полный бесперспективняк.

    ГВ>Да, к сожалению, во "внутреннем пользовании" очень часто приходится прибегать к додумыванию. Иначе многих просто невозможно понять.


    Всех. Я объяснил почему. Если думаете, что кого-то хорошо понимаете — почитайте что-нибудь (только не opera omnia Ильича!) и это пройдет.

    K>>Впрочем, воспринимать продукт творчества любого автора без некоторой доли фантазии — совершенно невозможно. Ведь существует же недоговоренность. Всегда. Любые слова вырваны из контекста, который у автора в голове и нам совершенно не известен.

    ГВ>Весь контекст доступен по приведённой мною ссылке. Прочтите, не пожалеете.

    Ну да, кое какой контекст доступен, пофантазировать можно, вот только на контекст, который в головах участников обсуждения ссылку не дать.
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re[35]: Оффтопик: Nemerle
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 12.09.06 12:38
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

    WH>Те парсер должен сформировать дерево которое удобно печатать? А ты в курсе что этот код находится в разделе misc те этого кода может и не быть и все будет работать?


    Ничего не понял.

    WH>Но прикол в том что у нас еще есть генератор кода которому начхать на то что к нему пришло унарный оператор или функция с одним параметром.


    А как принтер отличает унарный оператор от функции с одним параметром?

    WH> Ты можешь возразить что у нас есть встроеные типы и их нужно по особенному обрабатывать в MSIL'е но на это есть убойный аргумент: А зачем о встроеных типах знать парсеру, типизатру, макросам...? Не забываем про пользовательские операторы... Зачем на этих очень не простых стадиях лишнии детали?


    Ничего не понял.

    WH>И все это нужно засунуть в АСТ? И кстати в какое АСТ? их там несколько...


    Несколько AST? Это пример сильного дизайна?

    WH>Короче чистый ОО тут ни разу не рулит.


    Пока что, кроме необходимости создания кучи AST, я "рулежа" не увидел.

    Короче, меня абсолютно не волнует ни пригодность патерн-матчинга, ни пригодность ООП для создания AST. Я просто в очередной раз хотел напомнить, что если что-то сравниваете, то сравнивать нужно корректно. А трансляция "один в один" кода из парадигмы в парадигму это профанация.

    ANS>>Это не расширение, а кривой костыль.

    WH>Отрицание... любимый прием пуристов... Великий магистр оберона темже самым занимается.
    WH>Аргументы будут?

    Простой пример, завернул ты это расширение в либу, а у васи пупкина оно не работает, потому, что забыл вася это расширение скотчем в нужном месте прикрутить.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[15]: Насколько важен синтаксис языка?
    От: vdimas Россия  
    Дата: 12.09.06 13:04
    Оценка: -1
    Здравствуйте, FDSC, Вы писали:


    FDS>Ну и? А для программистов, которые пишут на Лиспе разве важно, как было писать этот ЛИСП другим программистам. Нет, им важно удобство. Покажите мне удобство для программистов, которые используют язык, а не пишут для него компилятор. Я могу за день написать простой компилятор языка assembler для Intel 8080, например, или Siemens не помню каких, но пользоваться то этим компилятором не мне. Понимаете о чём речь? Вы мне доказыватете, что для ЛИСПа удобно писать компилятор, а нужно доказывать что НА ЛИСПе удобно писать.


    Нет, этого доказывать не нужно. Для реальной конторы надо было доказать совсем другое — реальность бизнес-плана. Бизнес-план включает в себя деньги, сроки и набор фич, которые требуется реализовать за это время и за эти деньги. Ведь тут речь шла о стратапах, так вот, Автокад — это кодгда-то был именно таким на коленке собранным "стартапом" (хотя на тот момент еще не было такого термина). Если бы первые версии автокада выпускала бы мощная и весьма богатая контора, я не сомневаюсь, что они позволили бы себе так же удобные для программиста фичи. Хотя... и в этом у меня большие сомнения. Первые версии вышли тогда, когда об удобстве для программиста речи не было вообще. Ну вот как-то я не слышал в те времена дисскусий на эту тему. Расширять Автокад должны были не конечные пользователи, а специализирующиеся на этом програмисты-прикладники.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[27]: Не нужность super return (нелок. возврата) [рассм. п
    От: FDSC Россия consp11.github.io блог
    Дата: 12.09.06 13:38
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>Здравствуйте, FDSC, Вы писали:


    FDS>>Т.е. вы предлагаете примерно так:

    S>Нет. Предлагаем срочно идти изучать семантику finally.

    Вот накинулись, как будто я её не знаю
    Re[27]: Не нужность super return (нелок. возврата) [рассм. п
    От: FDSC Россия consp11.github.io блог
    Дата: 12.09.06 13:38
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>Здравствуйте, FDSC, Вы писали:


    FDS>>Т.е. вы предлагаете примерно так:

    S>Нет. Предлагаем срочно идти изучать семантику finally.

    Кстати, вы не поняли мой код, с finally он работать не будет
    Re[36]: Оффтопик: Nemerle
    От: WolfHound  
    Дата: 12.09.06 14:26
    Оценка: +1 -1
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    WH>>Те парсер должен сформировать дерево которое удобно печатать? А ты в курсе что этот код находится в разделе misc те этого кода может и не быть и все будет работать?

    ANS>Ничего не понял.
    А чего тут не понятного? Это опциональный код которого может и не быть. Он не нужен компилятору для работы.
    И хардкодить его в основной АСТ просто верх кривизны.

    WH>>Но прикол в том что у нас еще есть генератор кода которому начхать на то что к нему пришло унарный оператор или функция с одним параметром.

    ANS>А как принтер отличает унарный оператор от функции с одним параметром?
    В том куске кода что я приводил все есть. Если ты не в состоянии его понять то почему ты судишь о pattern-mattching'е.

    WH>> Ты можешь возразить что у нас есть встроеные типы и их нужно по особенному обрабатывать в MSIL'е но на это есть убойный аргумент: А зачем о встроеных типах знать парсеру, типизатру, макросам...? Не забываем про пользовательские операторы... Зачем на этих очень не простых стадиях лишнии детали?

    ANS>Ничего не понял.
    Это я к тому что загонять функциональность сотней match'ей в AST кривое решение.
    Единственное правильное направление это внешняя обработка AST, а в ОО это визитер или рукопашный pattern-mattching на куче if'ов. Но проблема в том что визитер сливает в сложных случаях типа
    | TT.TExpr.Call (TT.TExpr.OpCode (name), [parm], _) =>

    а куча if'ов совершенно не читабельна.
    Визитер не может распознять такоей паттерн. Это придется писать ручками.

    WH>>И все это нужно засунуть в АСТ? И кстати в какое АСТ? их там несколько...

    ANS>Несколько AST? Это пример сильного дизайна?
    А ты в состоянии скомпилировать Nemerle используя только один AST?

    WH>>Короче чистый ОО тут ни разу не рулит.

    ANS>Пока что, кроме необходимости создания кучи AST, я "рулежа" не увидел.
    Необходимость нескольких AST происходит из сложности задачи. Кстати я сомневаюсь что найдется хоть один компилятор современного языка в котором только одно представление кода.
    А то что ты не понимаешь pattern-mattching это твои личные проблеммы.

    ANS>Короче, меня абсолютно не волнует ни пригодность патерн-матчинга, ни пригодность ООП для создания AST. Я просто в очередной раз хотел напомнить, что если что-то сравниваете, то сравнивать нужно корректно. А трансляция "один в один" кода из парадигмы в парадигму это профанация.

    Ну так давай сравнивать.
    Перепиши те несколько строк что я приводил в ОО стиле.

    ANS>Простой пример, завернул ты это расширение в либу, а у васи пупкина оно не работает, потому, что забыл вася это расширение скотчем в нужном месте прикрутить.

    А ты думаешь если ОО решение не заточить на расширяемость оно будет чудесным образом работать? Наивный...
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[5]: Дополнение
    От: Kisloid Мухосранск  
    Дата: 12.09.06 15:09
    Оценка: +1 -2
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>1. Он (или Kolhoz? подозреваю, что это один и тот же человек) высказал очень верную мысль: програмирование — занятие не для всех и нечего на этих самых "всех" равняться. Мне это чертовски нравится.


    Опять началось, мы "элита", круче нас бывают только яйца, а всем остальным программирование не осилить и даже и не пытайтесь. Если бы у всех программистов было такое мнение, программисты бы вымерли как вид.

    К тебе никогда не подходили дети школьного возраста с огоньком в глазах и с вопросами по программированию ? Что ты им отвечаешь ? Дай угадаю: "сынок, это слишком сложно для тебя, это только для элиты, иди лучше в игрушки поиграй". Может это следующий Линус Торвальдс, Бьярн Страуструп, итд итп
    ((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))
    Re[6]: Дополнение
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 12.09.06 15:20
    Оценка: +2
    Здравствуйте, Kisloid, Вы писали:

    K>К тебе никогда не подходили дети школьного возраста с огоньком в глазах и с вопросами по программированию ? Что ты им отвечаешь ? Дай угадаю: "сынок, это слишком сложно для тебя, это только для элиты, иди лучше в игрушки поиграй". Может это следующий Линус Торвальдс, Бьярн Страуструп, итд итп


    Молодой человек, итересующийся программированием с огоньком в глазах -- это и есть та будущая элита программирования. Встретится с таким -- большая удача.

    К сожалению, ситуация сейчас обратная. Слишком много тех, кто пытается заниматься программированием без огонька в глазах. И спрашивают, в десятый раз, одно и то же, чем же отличается p от c в приведенном примере, и почему изменение p не изменяет c:
    char c = 'A';
    char * p = &c;
    ++p;


    Мой опыт показывает, что те, у кого глаза горят, понимают разницу между объектом и указателем на объект сразу. А вот тем, кто сразу не понимает, лучше, действительно, в игрушки поиграть.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[22]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 12.09.06 16:31
    Оценка: 1 (1) +3
    Здравствуйте, vdimas, Вы писали:

    V>Я лично ничуть про макросы не переживаю. Сам на С++ использую на всю катушку, невзирая на всякие "рекомендации", ибо если есть удобный инструмент — почему бы не воспользоваться?


    Ну всё! Лучше бы этого не говорил


    V>Не сомневаюсь, что для тебя Nemerle удобен. Но вот у меня тут скоро встанет вопрос, какую технологию избрать для следующего проекта. Как ты думаешь, я рискну применить его в своей команде?


    Я бы без предварительного погружения и чёткого понимания что происходит не рискнул. Я, кстати, и не призываю никого прямо сейчас брать и использовать N в коммерческих продуктах. Хотя, конечно, если есть желание, то почему бы и нет.

    С другой стороны, это же ведь не последний твой проект, правда? К следующему уже можно будет решить надо оно тебе или нет. Но для этого, опять же, надо будет сначала пробовать.

    V>Тут народ еще даже анонимные делегаты из C#2.0 боится юзать и спотыкается на иерархии ограничений генериков... А ты говоришь — Немерле


    Проблема в том, что мозги императивного программиста повёрнуты на решение задач без всяких делегатов. А дибильные (простите, други, но другого слова не подобрать) примеры из серии list.ForEach() только усугубляют ситуацию, т.к. в импертивном стили они решаются не менее эффективно, а для императивщика выглядят куда проще и понятнее.

    Тут надо искать примеры, которые действительно показывают силу ФП, где ФП резко устраняет дублирование кода и делает его намного проще. В принципе, если есть интерес, то такие примеры можно привести.
    Если нам не помогут, то мы тоже никого не пощадим.
    Снова про парадигму
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 12.09.06 19:42
    Оценка: -3
    Здравствуйте, Klapaucius, Вы писали:

    ГВ>>Пока что не хочу в очередной раз заниматься длинным разбором: что, кто и где сказал, и что это означает и какое впечатление производит. Я уже посвятил этому предостаточно букв.

    K>Не утруждайте себя длинным разбором. Вот короткий:
    K>Это было столкновение Википедии с евангелием от Алана Кэя. Которое закончилось, понятно, тем, что адепт Кэя высказался в том смысле что следование большинству интеллекта не требует, причем, что очень важно, в контексте дискуссии об общепринятости терминологии. Понятно даже и ежу, что общепринятость не критерий истины в общем случае. Но необщепринятая терминология не решает поставленные перед ней задачи, о чем я и писал. Понятно? В сообществе смолтокеров их терминология адекватна — в другом сообществе нет. И то, что терминологией владеют не 100 человек, а 10 — это не плюс, а минус такой терминологии.

    Ну причём тут "адепт"? Опять на личности переходим? Нехорошо-с. Слона-то Вы и не приметили. Напоминаю начало определения, даваемого википедией (я выделил кое-что):

    In computer science, object-oriented programming is a computer programming paradigm. Many programming languages support object-oriented programming (ref). Many programming frameworks, like the Java platform and the .NET Framework, are built on object-oriented principles. Object-oriented programming is often abbreviated as OOP.


    Если перейти по ссылке на описание понятия "парадигма", то предстанут взору удивительные строки:

    ...A programming paradigm provides (and determines) the view that the programmer has...


    И понимаете ли в чём дело. После того, как, фактически, в определении ООП, которым потрясали как "общепринятым", появилась сугубо субъектная характеристика ("взгляд"), дальнейшими рассуждениями относительно правильности, по крайней мере, этого определения можно поливать цветы (коли не увянут). А потому размахиванием подобным определением есть сугубая бездумность.

    В противовес этому определению выставлялись слова Алана Кея. Кстати, я не нашёл канонической цитаты, но кое-что можно посмотреть, например, здесь:

    OOP to me means only messaging, local retention and protection and
    hiding of state-process, and extreme late-binding of all things. It
    can be done in Smalltalk and in LISP. There are possibly other
    systems in which this is possible, but I'm not aware of them.


    Грубоватый перевод:

    ООП для меня означает только обмен собщениями, локальное хранение, защиту
    и скрытие состояния процесса, и только позднее связывание. Это можно сделать
    на Smalltalk и Lisp. Возможно, есть и другие системы, но я ничего
    о них не слышал.


    Но что характерно, здесь нет такого понятия, как "взгляд". Что почему-то меня не удивляет, даже не знаю, почему. Но одновременно я почему-то не удивлён появлению слова "взгляд" в википедии.

    Вы разницу между объектным и субъектным определением понимаете? Надеюсь, да. Так вот, если "общепринятым", почему-то оказалось субъектное определение (тем паче, в технической области), то это означает, что ошибку совершает то самое большинство. А такие источники как Википедия нередко озвучивают бытующие убеждения, а отнюдь не "копают глубоко". Думаю, что в средние века в Википедии вполне могло быть написано, что Солнце — из чистого золота, а все симпатичные женщины — ведьмы. Тоже общепринятое мнение было на определённом этапе.

    Возвращаясь к упомянутой дискуссии. Адепт там был или не адепт — не суть важно. Важно, что он сказал правильную вещь про бездумное следование за большинством. А в случае с определением объекта через субъект так оно и есть.

    ГВ>>На самом деле, "правильны" только те значения терминов, которые были им присущи при их появлении.

    K>Вечер юмора. Выходит, яблоко можно правильно назвать только на языке Адама и Евы? Вот умора! Да сам труд, который потребуется для исторических исследований, направленных на выяснение первого автора термина настолько "не экономичен", что дальше можно и не обсуждать.

    Причём тут конкретный язык? "Яблоком" же не стали называть, например, абрикосы? Кроме того, яблоком не называют, например, "взгляд из-под подушки в невечернем свете закатной Луны".

    ГВ>>В противном случае мы всегда сталкиваемся с необходимостью опрашивать n/2 на предмет их согласия с текущим значением терминов. Это не экономично. Соответственно, "правильное" значение термина нужно спрашивать не у большинства голосованием, а у его автора или, скажем так, у достаточно узкого круга.

    K>После этого останется проблема ознакомления большинства с этой терминологией. Вы ее в экономические подсчеты включили?
    K>На самом деле так часто и делается. Вся система образования работает в основном на то, чтобы общепринятая терминология оставалась общепринятой.

    Примерно это я и имел ввиду. К сожалению, системе образования попросту не всегда удаётся своевремнно сработать. Вот и получается кавардак.

    ГВ>> Истина таки да, всегда конкретна.

    K>Господи, ну нельзя же так увлекаться Ильичем в наше суровое время. "Как получишь галстук — береги его, он же с красным знаменем цвета одного" и так далее. На самом деле, как это не печально, быть может, никакой истины не существует. Есть вероятность для еденицы и статистика для множества едениц. И все! Самое лучшее, что мы можем себе позволить, это средняя темпмература по больнице.

    Угу. И это и есть конкретный и точный ответ на вопрос: "Какова средняя температура по больнице?" Но это не то же самое, что и: "Какова температура Васи Пупкина?"

    K>>>Общепринято, что вечный двигатель первого рода невозможен. Это действительно так (с очень хорошей вероятностью -> 1). Означает ли это, что перпетуум-мобилистов зажимает тупое большинство?

    ГВ>>Нет. Это означает, что в даном случае большинство более или менее усвоило законы физики.
    K>Выходит, что мифическая тирания большинства это не во всех случаях тирания глупости? И наоборот тоже? Именно об этом я и говорю.

    Да, разумеется. Я и не пытаюсь оспаривать это самое "не всегда". Это вообще параллелное рассуждение. Я говорю, что бессмысленно требовать от следования за большинством, только потому, что это большинство. Не видите разницы?

    ГВ>>Я и не додумывал за автора. Я озвучил впечатление, которое произвели его слова и полагаю, что не сильно промахнулся.

    K>С впечатлением вообще невозможно промахнуться, потому что впечатление много говорит о том, кто впечатляется, а не о том, что впечатляет. У людей обычно очень разные впечатления об одном и том же.

    Ну что же, это Ваше неотъемлемое право: делать выводы о чём и о ком угодно.

    ГВ>> Нехай автор лучше формулирует свои мысли, дабы не. Коли уж он хотел сказать что-то другое.

    K>К этому надо стремится, но судить за неудачу не стоит. В конце концов, легче переплыть Атлантический океан по-собачьи, а потом изобрести эликсир вечной молодости чем сказать что-то нетривиальное так, чтобы ВСЕ поняли одинаково.

    Если Вы заметили, я не осуждаю автора. И даже не пытаюсь назвать его адептом чего-то. Но уж если возникла двусмысленность, то как тут не ляпнуть: "Ай, да Пушкин, ай, да сукин сын!" Хотя в общем я обращаюсь к словам и их расположению.

    K>NB: Людям и так друг друга понять не просто, а если еще и добрая воля необходимая для понимания отсутствует — это полный бесперспективняк.


    Почему же отсутствует? Наоборот, не понимай мы друг друга, так и не смогли бы даже общаться, не то, что спорить. Скорее уж добрая воля отсутствует у тех, кто идёт за большинством ради большинства.

    K>>>Впрочем, воспринимать продукт творчества любого автора без некоторой доли фантазии — совершенно невозможно. Ведь существует же недоговоренность. Всегда. Любые слова вырваны из контекста, который у автора в голове и нам совершенно не известен.

    ГВ>>Весь контекст доступен по приведённой мною ссылке. Прочтите, не пожалеете.
    K>Ну да, кое какой контекст доступен, пофантазировать можно, вот только на контекст, который в головах участников обсуждения ссылку не дать.

    А он как раз и не важен. Или это сетование на невозможность "предметного мозговедства"?
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[30]: Дополнение к посту Vermicious Knid
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 12.09.06 22:25
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>В динамике нет никаких приведений, какой тип передали тот и используется, и исключение если он не подерживает то что требуется. И хаками это является только для статических языков.


    Динамика разная конечно бывает. Но если можно вот так свободно сложить разные числа из массива, то неявные приведения есть. Хотя конечно есть один выход... хранить все числа в виде единобразных объектов поддерживающих числа неограниченного размера. Но вот эффективность у такого подхода ой как не высока. Автор компилируемого язык на такое пойти не может.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[30]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 12.09.06 22:25
    Оценка: -2 :))) :)
    Здравствуйте, Sinclair, Вы писали:

    S>Просто в ST авторы решили, что метод ForEach ничуть не хуже встроенного оператора foreach.


    Мне просто не хочется тратить время на развинчание твоего мнения. Оставайся при нем. Авторы Смолтока тоже пусть остаются при своем, а Смолток пусть занимает то место которое он заслужил. Все ОК.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[31]: Дополнение к посту Vermicious Knid
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 13.09.06 02:51
    Оценка: +1
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, FR, Вы писали:


    FR>>В динамике нет никаких приведений, какой тип передали тот и используется, и исключение если он не подерживает то что требуется. И хаками это является только для статических языков.


    VD>Динамика разная конечно бывает. Но если можно вот так свободно сложить разные числа из массива, то неявные приведения есть.


    Совсем не обязательно. Достаточно того, чтобы метод, реализующий сложение, умел обрабатывать аргументы разных типов (что в случае динамической типизации выполняется элементарно, если все ожидаемые типы имеют одиаковый набор методов, использующихся в данном). Несколько отдельно стоят методы, реализованные через примитивы VM — потому что они не вызывают других методов. Но и в этом случае достаточно того, чтобы примитив просто умел обрабатывать аргументы разных типов.

    PS. Вообще, уж сколько раз твердили миру
    Автор: Eugene Beschastnov
    Дата: 12.07.06
    , что не надо путать шкалы типизаций "слабая-сильная" и "статическая-динамическая".
    --
    Бесчастнов Евгений
    Re[28]: Не нужность super return (нелок. возврата) [рассм. п
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 13.09.06 04:33
    Оценка:
    Здравствуйте, FDSC, Вы писали:

    FDS>Вот накинулись, как будто я её не знаю

    По коду не видно этого знания.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[28]: Не нужность super return (нелок. возврата) [рассм. п
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 13.09.06 04:33
    Оценка:
    Здравствуйте, FDSC, Вы писали:


    FDS> Кстати, вы не поняли мой код, с finally он работать не будет

    Прекрасно будет. Или ты полагаешь, что если вылетело не SuperReturn, то Unlock() делать не надо???
    Кроме того, рекомендую еще разочек перечитать насчет запрета на внесение всякой ерунды типа обращения к базе в библиотечный ForEach.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[24]: Насколько важен синтаксис языка?
    От: Turtle.BAZON.Group  
    Дата: 13.09.06 05:30
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Вот интересно. Пусть дорогой разработчик на Java в Москве получает $3K в месяц. И требуется ему писать софт, который работает под Windows, Linux, Solaris и MacOS. Затраты на него будут составлять $3K в месяц + $500 на приобретение IDEA. JDK для всех этих платформ бесплатен.

    Давайте оформим разработчика как ИП, тогда затраты на IDEA будут всего $200, экономия будет $300. А вообще, возьмем лушче Eclipse, тогда все $500.

    E>А теперь вопрос: можете ли вы перечислить преимущества, которые Eiffel может дать разработчикам (не важно дешевым или дорогим) по сравнению с C# или Java? Настолько важные преимущества, которые окупили бы стоимость Eiffel-евских средств разработки?

    В контексте рассмотренной абстрактной задачи — нет. Тем более, что вами явно предполагается одинаковое время общей разработки (включая проектирование, написание кода и отладку). Однако, это еще вопрос. Поскольку сам с eiffel не знаком, то и говорить не буду, но ясно только одно, что это время не одинаково. При имеющемся значении насколько не оиднаково, можно давать ответы и на другие вопросы.

    E>И еще один вопрос в догонку: что же делать компании, которая вложила такие деньги в средства разработки и обучение специалистов, выпустила кроссплатформенный продукт на Eiffel (под Windows, Linux, Solaris, MacOS). А затем бах -- нужно его портировать под UP-UX и AIX.

    Заранее думать надо чем разрабатывать (и где) и как собирать. Java и .Net в этом плане тоже не панацея.

    Я, вообще-то, только обратил внимание на то, что сам eiffel и его создатели цветут и пахнут. Конечно, с рынком приходится считаться, но если бы язык был в полной даже не знаю как сказать где, то не было бы сайта eiffel.com, поскольку его оплачивать тоже надо. И язык вовсе как-то не страдает тем, что он не популярен в массах. Ему и не надо этого.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[25]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 13.09.06 06:55
    Оценка:
    Здравствуйте, Turtle.BAZON.Group, Вы писали:

    TBG>Я, вообще-то, только обратил внимание на то, что сам eiffel и его создатели цветут и пахнут. Конечно, с рынком приходится считаться, но если бы язык был в полной даже не знаю как сказать где, то не было бы сайта eiffel.com, поскольку его оплачивать тоже надо. И язык вовсе как-то не страдает тем, что он не популярен в массах. Ему и не надо этого.


    Ну разработчики абсолютно бесплатных языков тоже не жалуются на жизнь, у них и сайты есть и языки на порядки более популярные чем Эйфель.
    Re[25]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 13.09.06 07:25
    Оценка: 15 (2) +1
    Здравствуйте, Turtle.BAZON.Group, Вы писали:

    E>>А теперь вопрос: можете ли вы перечислить преимущества, которые Eiffel может дать разработчикам (не важно дешевым или дорогим) по сравнению с C# или Java? Настолько важные преимущества, которые окупили бы стоимость Eiffel-евских средств разработки?

    TBG>В контексте рассмотренной абстрактной задачи — нет. Тем более, что вами явно предполагается одинаковое время общей разработки (включая проектирование, написание кода и отладку). Однако, это еще вопрос. Поскольку сам с eiffel не знаком, то и говорить не буду, но ясно только одно, что это время не одинаково. При имеющемся значении насколько не оиднаково, можно давать ответы и на другие вопросы.

    Откуда это вам ясно, если вы с Eiffel не знакомы?
    Например, я весной этого года
    Автор: eao197
    Дата: 06.04.06
    уделил массу своего времени ознакомлению с Eiffel и ситуацией вокруг него. В частности, проштудировал две книги по Eiffel-ю, которые шли в составе EiffelStudio, попробовал EiffelStudio и SmartEiffel, попробовал нарыть Internet-ресурсы и библиотеки для Eiffel. Ничего похожего на community C, C++, Java, Ruby, Perl, Python, Tcl/Tk нет и в помине. Вообще. Единственное достойное собрание библиотек -- только в составе EiffelStudio. Но и оно не идет ни в какое сравнение в тем, что есть для перечиленных мной выше языков (а ведь еще можно вспомнить .NET Framework, C# и Nemerle).

    И в самом языке я увидел только один момент, который мог бы позволить конкурировать Eiffel-ю с Java или C#. Это Design by Contract. Но этот момент с лихвой компенсируется громаднейшим количеством готовых библиотек и фреймворков для Java/C#. А если сравнить Eiffel, например, со Scala и Nemerle, то даже в языковом плане Eiffel не имеет никаких преимуществ (даже с учетом отсутствия в Scala поддержки Design By Contract). А есть еще и D, который вообще имеет все, что есть в Eiffel-е.

    И добавим сюда еще кровную вражду между Мейером и разработчиками SmartEiffel, то так же не идет на пользу языку.

    Так что я отвественно говорю, что просле проведенного мной исследования языка Eiffel я не нашел в нем таких достоинств, из-за которых его стоило предпочесть современным managed языкам. А я примеривался к Eiffel совершенно серьезно.

    E>>И еще один вопрос в догонку: что же делать компании, которая вложила такие деньги в средства разработки и обучение специалистов, выпустила кроссплатформенный продукт на Eiffel (под Windows, Linux, Solaris, MacOS). А затем бах -- нужно его портировать под UP-UX и AIX.

    TBG>Заранее думать надо чем разрабатывать (и где) и как собирать. Java и .Net в этом плане тоже не панацея.

    Угу, гладко было на бумаге. Вам не приходилось сталкиваться с ситуацией, когда вы собственный продукт разрабатываете с расчетом на платформы Windows, Linux и Solaris, а затем приходит богатый клиент и говорит: "Я хочу купить ваш продукт, но у нас M мегабаксов вбухано в инфраструктуру AIX-а, есть готовые ресурсы, есть обученный персонал и мы не хотим разводить зоопарк платформ". Я вообще не знаю, найдется ли менеджер, который в таких условиях скажет клиенту: "Извините, но мы не можем вам ничего предложить". Уж скорее ответит: "Да нет проблем, нам нужно только недельки две-три на адаптацию и все будет у вас прекрасно работать. Но и стоить решение будет на 30% дороже". Даже если за эти две-три недельки разработчикам придется переписать 70% кода

    TBG>Я, вообще-то, только обратил внимание на то, что сам eiffel и его создатели цветут и пахнут. Конечно, с рынком приходится считаться, но если бы язык был в полной даже не знаю как сказать где, то не было бы сайта eiffel.com, поскольку его оплачивать тоже надо. И язык вовсе как-то не страдает тем, что он не популярен в массах. Ему и не надо этого.


    Вы, вообще-то, обратили внимание только на факт наличия eiffel.com и на большие цены на Eiffel. И предположили, что EiffelStudio по таким ценам раскупают. А вот для меня это ничего не значит. Поскольку с такой же вероятностью события могут развиваться как в анекдоте: "По чем спички? $10 за коробок. А почему так дорого? Деньги очень нужны". Для того, чтобы поверить в то, что Eiffel цветет и пахнет, нужно бы посмотреть на графики их продаж. А так же наблюдать количество Eiffel-евских проектов.

    А пока складывается впечатление, что в свое время они подцепили ряд богатых клиентов, вроде военных и авиапромышлеников, и теперь продолжают им продавать свой EiffelStudio по баснословным ценам. А тем и деваться не куда, поскольку проще заплатить, чем переписывать унаследованные системы. Зато новых пользователей они привлечь уже не могут. Свительством чему является бесплатная (но закрытая) версия EiffelStudio (от хорошей жизни приносящий деньги продукт бесплатно раздавать не будут). Так что запах получается с душком.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[18]: Насколько важен синтаксис языка?
    От: vdimas Россия  
    Дата: 13.09.06 07:27
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    V>>В неадекватном восприятии тобой окружающей действительности, ИМХО. Считай, что тебе просто везло, ибо "быкующие" при случае отхватывают гораздо круче "обычных", и лечатся потом дольше. Такой закон жизни, фиг его знает, с чем это связано.


    Д>Ты делаешь слишком далеко идущие выводы, не имея никакой информации.


    Вот ты блин упорный.
    Я примерно представляю себе успехи человека, который начал заниматься качалкой в >20 лет.

    Информацию можешь дать себе сам по следующим пунктам:
    — жим штанги от груди твоего веса * 1.7? (разы?)
    — приседание с этой же штангой, разы?
    — максимальный вес штанги, который можешь взять на бицепс (в разах от твоего веса)?
    — поттягивание на одной руке, могёшь? кол-во раз по каждой?

    Для сравнения представь себе боксера-профи сравнимого с твоим веса, у которого ответы на эти вопросы: >20, >20, 1.2, 7/5, которого гоняли всю жизнь на полумарафонские дистанции со скоростями, близкими к спринтерским с 1-2-х килограммовыми гирьками в руках, заставляли ходить на руках по нескольку кругов по залу, прыгать коленками к плечам до 5 этажа по лестничным пролетам домов туда и обратно несколько раз (представил себе упражненьице?) и т.д. И при этом, этому профи приходилось сталкиваться и весьма серьезно с такими же профи, и выигрывать соревнования. В общем, тут обсуждать нечего, и если ты на улице общаешься как здесь в форуме (по твоим словам), то ты совершаешь большую ошибку. Сам же притянешь на себя необратимые неприятности однажды, и накроется для тебя спорт насовсем.
    Re[22]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 13.09.06 07:55
    Оценка: 1 (1)
    Здравствуйте, FDSC, Вы писали:

    FDS>Здравствуйте, Eugene Beschastnov, Вы писали:


    EB>>Что касается "выражений посложнее": в Smalltalk средний размер метода — 6-7 строк. Включая определение переменных и прочее. Где тут можно сделать "блок посложнее"?


    FDS>Это можно написать про любой язык. Только вот на практике почему-то далеко не все так делают


    Прочитай внимательнее ссылку — это не теоретические рассуждения о том, как хорошо бы делать, это прямой подсчёт строк во всех методах для трёх основных диалектов. Там даже код приведён, который этот подсчёт выполняет.
    --
    Бесчастнов Евгений
    Re[19]: Насколько важен синтаксис языка?
    От: _rasta  
    Дата: 13.09.06 08:42
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    V>- поттягивание на одной руке, могёшь? кол-во раз по каждой?


    между прочим... мне всегда было интересно: держаться за перекладину можно только одной рукой, а вторая болтается в воздухе или держаться за перекладину одной рукой, а второй можно держаться за ту руку, которой держишься за перекладину?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[22]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 13.09.06 09:08
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    EB>>Что касается "выражений посложнее": в Smalltalk средний размер метода — 6-7 строк. Включая определение переменных и прочее. Где тут можно сделать "блок посложнее"?


    VD>Это сказки. В реальном коде размер метода будет определяться умениями программиста по декомпозиции и обемностью стоящей перед методом задачи. И рано или поздно в коде появятся методы размером хотя бы в 10-20 строк.


    VD>Другие языки (особенно функциональные) имеют даже лучшие средства декомпозиции функций нежели те что имется в Смолтоке, но и работая на них получаются большие функции.


    http://www.rsdn.ru/Forum/Message.aspx?mid=2107260&amp;only=1
    Автор: Eugene Beschastnov
    Дата: 13.09.06
    --
    Бесчастнов Евгений
    Re[20]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 13.09.06 09:14
    Оценка: :))) :))) :)
    Здравствуйте, _rasta, Вы писали:

    V>>- поттягивание на одной руке, могёшь? кол-во раз по каждой?


    _>между прочим... мне всегда было интересно: держаться за перекладину можно только одной рукой, а вторая болтается в воздухе или держаться за перекладину одной рукой, а второй можно держаться за ту руку, которой держишься за перекладину?


    Это зависит от синтаксиса языка на котором программировал перед тем как подошел к перекладине
    Re: Снова про парадигму
    От: Klapaucius  
    Дата: 13.09.06 12:02
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

    K>>Это было столкновение Википедии с евангелием от Алана Кэя. Которое закончилось, понятно, тем, что адепт Кэя высказался в том смысле что следование большинству интеллекта не требует, причем, что очень важно, в контексте дискуссии об общепринятости терминологии. Понятно даже и ежу, что общепринятость не критерий истины в общем случае. Но необщепринятая терминология не решает поставленные перед ней задачи, о чем я и писал. Понятно? В сообществе смолтокеров их терминология адекватна — в другом сообществе нет. И то, что терминологией владеют не 100 человек, а 10 — это не плюс, а минус такой терминологии.

    ГВ>Ну причём тут "адепт"? Опять на личности переходим? Нехорошо-с.

    Слово "адепт", не знаю как для Вас, а для меня не несет никакой негативной окраски.

    ГВ>Слона-то Вы и не приметили. Напоминаю начало определения, даваемого википедией (я выделил кое-что):

    ГВ>

    In computer science, object-oriented programming is a computer programming paradigm. Many programming languages support object-oriented programming (ref). Many programming frameworks, like the Java platform and the .NET Framework, are built on object-oriented principles. Object-oriented programming is often abbreviated as OOP.

    ГВ>Если перейти по ссылке на описание понятия "парадигма", то предстанут взору удивительные строки:
    ГВ>

    ...A programming paradigm provides (and determines) the view that the programmer has...

    ГВ>И понимаете ли в чём дело. После того, как, фактически, в определении ООП, которым потрясали как "общепринятым", появилась сугубо субъектная характеристика ("взгляд"), дальнейшими рассуждениями относительно правильности, по крайней мере, этого определения можно поливать цветы (коли не увянут). А потому размахиванием подобным определением есть сугубая бездумность.

    "Где я? Кто я? Куда я? Куда?!". Зря я в разговоре с Вами употребил слово "Википедия". Моя ошибка. Не стоит развивать снова эту мысль про термин "парадигма" — который вызывает у Вас непонятную идиосинкразию. Вы об этом уже много писали, кому интересно — прочтут.

    ГВ>В противовес этому определению выставлялись слова Алана Кея. Кстати, я не нашёл канонической цитаты, но кое-что можно посмотреть, например, здесь:

    ГВ>

    OOP to me means only messaging, local retention and protection and
    ГВ>hiding of state-process, and extreme late-binding of all things. It
    ГВ>can be done in Smalltalk and in LISP. There are possibly other
    ГВ>systems in which this is possible, but I'm not aware of them.

    ГВ>Грубоватый перевод:
    ГВ>

    ООП для меня означает только обмен собщениями, локальное хранение, защиту
    ГВ>и скрытие состояния процесса, и только позднее связывание. Это можно сделать
    ГВ>на Smalltalk и Lisp. Возможно, есть и другие системы, но я ничего
    ГВ>о них не слышал.

    ГВ>Но что характерно, здесь нет такого понятия, как "взгляд". Что почему-то меня не удивляет, даже не знаю, почему. Но одновременно я почему-то не удивлён появлению слова "взгляд" в википедии.

    Просто блеск! Взгляд, значит — полный отстой, а личное мнение аргументированное незнанием рулит навсегда?

    ГВ>Вы разницу между объектным и субъектным определением понимаете? Надеюсь, да.


    А Вы? Какое определение в данном смысле может быть объективным? Почему Вы его не привели в качестве примера?

    ГВ>Так вот, если "общепринятым", почему-то оказалось субъектное определение (тем паче, в технической области), то это означает, что ошибку совершает то самое большинство. А такие источники как Википедия нередко озвучивают бытующие убеждения, а отнюдь не "копают глубоко". Думаю, что в средние века в Википедии вполне могло быть написано, что Солнце — из чистого золота, а все симпатичные женщины — ведьмы. Тоже общепринятое мнение было на определённом этапе.


    Повторяю снова. Адекватность терминологии определяется в первую очередь ее распространенностью в сообществе.

    ГВ>Возвращаясь к упомянутой дискуссии. Адепт там был или не адепт — не суть важно. Важно, что он сказал правильную вещь про бездумное следование за большинством. А в случае с определением объекта через субъект так оно и есть.


    Во первых, говоря о следовании за большинством и т.д. он доказывал преимущество малораспространенной терминологии перед широко распространенной, что противоречит назанчению терминологии. Я писал об этом. Вы сможете оспорить утверждение о том, что терминология нужна для того, чтобы люди говорили об одном и том же на одном языке? Отвечайте по существу, пожалуйста, не отвлекайтесь.

    ГВ>>>На самом деле, "правильны" только те значения терминов, которые были им присущи при их появлении.

    K>>Вечер юмора. Выходит, яблоко можно правильно назвать только на языке Адама и Евы? Вот умора! Да сам труд, который потребуется для исторических исследований, направленных на выяснение первого автора термина настолько "не экономичен", что дальше можно и не обсуждать.
    ГВ>Причём тут конкретный язык?

    При том, что система терминов — это язык.

    ГВ>"Яблоком" же не стали называть, например, абрикосы?


    Вы считаете, что невозможен язык, в котором абрикосу будет соответствовать языковой знак "яблоко"?
    Вы вкурсе, что отношение между объектом, определяемым языковым знаком и языковым знаком асимметрично?
    Вы считаете что термин "абрикос" для плода Prunus armeniaca в группе людей называющих этот плод "яблоком" адекватен?

    ГВ>Кроме того, яблоком не называют, например, "взгляд из-под подушки в невечернем свете закатной Луны".


    Почему? Потому, что это общепринято? Что еще мешает называть это именно так?

    K>>На самом деле, как это не печально, быть может, никакой истины не существует. Есть вероятность для еденицы и статистика для множества едениц. И все! Самое лучшее, что мы можем себе позволить, это средняя темпмература по больнице.

    ГВ>Угу. И это и есть конкретный и точный ответ на вопрос: "Какова средняя температура по больнице?"

    На этот вопрос не существует конкретного и точного ответа, как раз потому, что этот вопрос не точен и не конкретен. Объяснять почему?
    Или вы имеете в виду, что точный ответ на вопрос "какова средняя температура по больнице" — это слова "это средняя температура по больнице". Формально — это верно, но никакой информации этот ответ не содержит.

    ГВ>Но это не то же самое, что и: "Какова температура Васи Пупкина?"


    Средняя температура по Васе Пупкину?

    K>>Выходит, что мифическая тирания большинства это не во всех случаях тирания глупости? И наоборот тоже? Именно об этом я и говорю.

    ГВ>Да, разумеется. Я и не пытаюсь оспаривать это самое "не всегда". Это вообще параллелное рассуждение. Я говорю, что бессмысленно требовать от следования за большинством, только потому, что это большинство. Не видите разницы?

    Какое совпадене! Я говорю о том же.

    ГВ>Если Вы заметили, я не осуждаю автора. И даже не пытаюсь назвать его адептом чего-то. Но уж если возникла двусмысленность, то как тут не ляпнуть: "Ай, да Пушкин, ай, да сукин сын!" Хотя в общем я обращаюсь к словам и их расположению.


    Не осудили. Вы просто пересказали высказывание автора своими словами извратив при этом смысл так, чтобы у любого читателя не потрудившегося ознакомится с оригинальной фразой и ее контекстом была возможность осудить автора самостоятельно, причем за то, в чем он вовсе не виноват.
    Что характерно, когда я проделал то же самое с Вашей фразой — Вам это совсем не понравилось. с чего бы это?

    K>>NB: Людям и так друг друга понять не просто, а если еще и добрая воля необходимая для понимания отсутствует — это полный бесперспективняк.

    ГВ>Почему же отсутствует? Наоборот, не понимай мы друг друга, так и не смогли бы даже общаться, не то, что спорить.

    Кстати сказать, для того чтобы спорить вовсе не обязательно понимать. Как раз наоборот — чаще всего понимание мешает спорить.

    ГВ>Скорее уж добрая воля отсутствует у тех, кто идёт за большинством ради большинства.


    А у тех, кто за меньшинством ради меньшинства?
    И вообще, здесь-то причем добрая воля?

    K>>Ну да, кое какой контекст доступен, пофантазировать можно, вот только на контекст, который в головах участников обсуждения ссылку не дать.

    ГВ>А он как раз и не важен.

    Докажите.
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re[19]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 13.09.06 13:43
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    Я прекрасно осведомлен о своих собственных успехах и об аналогичных показателях у профессионалов. Можешь не живописать мне картины жутких терминаторов, я и сам не одного видел.
    Задумайся лучше о том, что из двух попыток сделать догадку не имея данных ты два раза попал пальцем в небо. Тот еще результат — у бросания монетки и то точность существенно выше.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[26]: Насколько важен синтаксис языка?
    От: Turtle.BAZON.Group  
    Дата: 13.09.06 15:01
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Откуда это вам ясно, если вы с Eiffel не знакомы?

    Это предположение. Это во-первых. Во-вторых, про Eiffel сказал только то, что он живет. А раз живет — пусть. НИЧЕГО того, что он лучше или хуже — я не говорил. Не стоит мне приписывать своих фантазий.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[27]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 13.09.06 15:14
    Оценка: 69 (1)
    Здравствуйте, Turtle.BAZON.Group, Вы писали:

    E>>Откуда это вам ясно, если вы с Eiffel не знакомы?

    TBG>Это предположение. Это во-первых. Во-вторых, про Eiffel сказал только то, что он живет. А раз живет — пусть. НИЧЕГО того, что он лучше или хуже — я не говорил. Не стоит мне приписывать своих фантазий.

    Вы сказали:
    Автор: Turtle.BAZON.Group
    Дата: 11.09.06

    Советую сходить на eiffel.com и узнать, что он вовсе даже не в заднице, а его создатели гребут бабло. В том числе и с Microsoft, Sun, IBM и т.д.


    Следовательно, с моей оценкой ситуации с Eiffel вы не согласны. Ваше мнение о "жизни" Eiffel основывается просто на основании наличия сайта eiffel.com и объявленных на нем цен. Однако, эти факты не могут опровергнуть высказаной мной оценки. По мне, если язык по своим параметрам не может в принципе рассматриваться как язык для реализации новых проектов, то его ситуация, имхо, плачевна (иными словами, он там находится в том самом месте).


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[2]: Снова про парадигму
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 13.09.06 16:04
    Оценка: -1
    Здравствуйте, Klapaucius, Вы писали:

    ГВ>>Но что характерно, здесь нет такого понятия, как "взгляд". Что почему-то меня не удивляет, даже не знаю, почему. Но одновременно я почему-то не удивлён появлению слова "взгляд" в википедии.

    K>Просто блеск! Взгляд, значит — полный отстой, а личное мнение аргументированное незнанием рулит навсегда?

    ГВ>>Вы разницу между объектным и субъектным определением понимаете? Надеюсь, да.

    K>А Вы? Какое определение в данном смысле может быть объективным? Почему Вы его не привели в качестве примера?

    Да не объективным, а объектным. Объектное определение ссылается на объект, субъектное — на субъект. Объектное определение может быть субъективным.

    ГВ>>Так вот, если "общепринятым", почему-то оказалось субъектное определение (тем паче, в технической области), то это означает, что ошибку совершает то самое большинство. А такие источники как Википедия нередко озвучивают бытующие убеждения, а отнюдь не "копают глубоко". Думаю, что в средние века в Википедии вполне могло быть написано, что Солнце — из чистого золота, а все симпатичные женщины — ведьмы. Тоже общепринятое мнение было на определённом этапе.

    K>Повторяю снова. Адекватность терминологии определяется в первую очередь ее распространенностью в сообществе.

    Значит, общество не до конца понимает суть явления, раз оперирует терминологией на основе субъектных определений. Кстати, почему-то википедический "взгляд" я встречал только в википедии. Наверное, мне повезло в этом отношении.

    ГВ>>Возвращаясь к упомянутой дискуссии. Адепт там был или не адепт — не суть важно. Важно, что он сказал правильную вещь про бездумное следование за большинством. А в случае с определением объекта через субъект так оно и есть.

    K>Во первых, говоря о следовании за большинством и т.д. он доказывал преимущество малораспространенной терминологии перед широко распространенной, что противоречит назанчению терминологии. Я писал об этом.

    Не надо ставить всё в очередной раз с ног на голову. Сравнивались определения терминов, данные Кеем и википедией. Википедическое на фоне Кеевского не смотрится по причинам, о которых я говорил. Но всё равно его пытаются навязать, ибо оно "общепринятое". Сие есть смешно и грустно одновременно.

    K>Вы сможете оспорить утверждение о том, что терминология нужна для того, чтобы люди говорили об одном и том же на одном языке? Отвечайте по существу, пожалуйста, не отвлекайтесь.


    Я ответил по существу.

    ГВ>>>>На самом деле, "правильны" только те значения терминов, которые были им присущи при их появлении.

    K>>>Вечер юмора. Выходит, яблоко можно правильно назвать только на языке Адама и Евы? Вот умора! Да сам труд, который потребуется для исторических исследований, направленных на выяснение первого автора термина настолько "не экономичен", что дальше можно и не обсуждать.
    ГВ>>Причём тут конкретный язык?
    K>При том, что система терминов — это язык.

    Просклоняйте "глокая куздра" ради смеха.

    ГВ>>"Яблоком" же не стали называть, например, абрикосы?

    K>Вы считаете, что невозможен язык, в котором абрикосу будет соответствовать языковой знак "яблоко"?

    Возможен.

    K>Вы вкурсе, что отношение между объектом, определяемым языковым знаком и языковым знаком асимметрично?


    Естественно. Это как раз стимул для развития и уточнения терминологии. Но причём здесь может оказаться "взгляд"?

    K>Вы считаете что термин "абрикос" для плода Prunus armeniaca в группе людей называющих этот плод "яблоком" адекватен?


    Зависит от контекста. Публичных навязываний подобной терминологии я пока не замечал.

    ГВ>>Кроме того, яблоком не называют, например, "взгляд из-под подушки в невечернем свете закатной Луны".

    K>Почему? Потому, что это общепринято? Что еще мешает называть это именно так?

    Откуда я знаю. Видимо, то, что большинство таки не одни лишь законы физики усвоило. Это хорошо и хорошо весьма.

    K>>>На самом деле, как это не печально, быть может, никакой истины не существует. Есть вероятность для еденицы и статистика для множества едениц. И все! Самое лучшее, что мы можем себе позволить, это средняя темпмература по больнице.

    ГВ>>Угу. И это и есть конкретный и точный ответ на вопрос: "Какова средняя температура по больнице?"
    K>На этот вопрос не существует конкретного и точного ответа, как раз потому, что этот вопрос не точен и не конкретен. Объяснять почему?

    Угу, потому что не указаны временные рамки и методика измерения температуры как минимум.

    K>Или вы имеете в виду, что точный ответ на вопрос "какова средняя температура по больнице" — это слова "это средняя температура по больнице". Формально — это верно, но никакой информации этот ответ не содержит.


    Это уже словоблудие. Понятно, что предполагается упоминание какой-то конкретной цифры.

    ГВ>>Но это не то же самое, что и: "Какова температура Васи Пупкина?"

    K>Средняя температура по Васе Пупкину?

    Смешно, спасибо.

    K>>>Выходит, что мифическая тирания большинства это не во всех случаях тирания глупости? И наоборот тоже? Именно об этом я и говорю.

    ГВ>>Да, разумеется. Я и не пытаюсь оспаривать это самое "не всегда". Это вообще параллелное рассуждение. Я говорю, что бессмысленно требовать от следования за большинством, только потому, что это большинство. Не видите разницы?

    K>Какое совпадене! Я говорю о том же.


    Я потрясён. К чему тогда весь Ваш спич?

    ГВ>>Если Вы заметили, я не осуждаю автора. И даже не пытаюсь назвать его адептом чего-то. Но уж если возникла двусмысленность, то как тут не ляпнуть: "Ай, да Пушкин, ай, да сукин сын!" Хотя в общем я обращаюсь к словам и их расположению.

    K>Не осудили. Вы просто пересказали высказывание автора своими словами извратив при этом смысл так, чтобы у любого читателя не потрудившегося ознакомится с оригинальной фразой и ее контекстом была возможность осудить автора самостоятельно, причем за то, в чем он вовсе не виноват.

    Мне совершенно не важно, что автор хотел сказать. Важно, в чём это выразилось.

    K>Что характерно, когда я проделал то же самое с Вашей фразой — Вам это совсем не понравилось. с чего бы это?


    С какой фразой? Признаться, я немного растерялся.

    ГВ>>Скорее уж добрая воля отсутствует у тех, кто идёт за большинством ради большинства.

    K>А у тех, кто за меньшинством ради меньшинства?

    А никто не предлагает идти за меньшинством ради меньшинства. С чего Вы это взяли?

    K>И вообще, здесь-то причем добрая воля?


    Задайте этот вопрос себе.

    K>>>Ну да, кое какой контекст доступен, пофантазировать можно, вот только на контекст, который в головах участников обсуждения ссылку не дать.

    ГВ>>А он как раз и не важен.

    K>Докажите.


    А какая разница, что происходит в голове у спорщика? Думайте о чём хотите! Важно, в чём это выражается.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[28]: Насколько важен синтаксис языка?
    От: Turtle.BAZON.Group  
    Дата: 14.09.06 04:21
    Оценка: -1
    Здравствуйте, eao197, Вы писали:

    E>Следовательно, с моей оценкой ситуации с Eiffel вы не согласны. Ваше мнение о "жизни" Eiffel основывается просто на основании наличия сайта eiffel.com и объявленных на нем цен. Однако, эти факты не могут опровергнуть высказаной мной оценки. По мне, если язык по своим параметрам не может в принципе рассматриваться как язык для реализации новых проектов, то его ситуация, имхо, плачевна (иными словами, он там находится в том самом месте).


    Тут у вас тоже неплохо получилось
    Автор: eao197
    Дата: 11.09.06

    Оказался в заднице благодоря маркетингу


    После чего я не согласился с вами не в ситуации оценки языка Eiffel как такового для целей общей разработки, а с тем, что само состояние продаж языка и его сред разработки не может служить основанием для подобных заявлений. Вот язык регулярных выражений, например, тоже не может рассматриваться как язык для реализации новых проектов, однако, ему это не мешает решать свои задачи. Если есть сайт (а его нужно содержать), значит, это кому-то надо. То, что по вашим параметрам язык вам не подошел — не беда, со всяким бывает. То, что по вашему мнению маркетологи допустили досадный промах при распространении языка всем и вся — возможно, вы и правы, но какое это отношение имеет именно к самому языку?

    PostScript, к примеру, я бы тоже не рассматривал как язык для реализации своих проектов, однако ему это не мешает быть на почти всех принтерах и рассматривать его как в *** я бы не стал.

    JScript с VBScript, думаю, мы бы с вами тоже не рассматривали как язык для реализации новых проектов, тем не менее, ребята из Microsoft с их помощью решают свои задачи (Windows Resource Kit).

    А BashScript? Стали бы рассматривать как язык для реализации новых проектов? Я бы, пожалуй, подумал перед этим немножко. Но ведь свое дело делает просто замечательно!

    За сим прошу откланяться, вам большой поклон за поддержание беседы, но по этой теме больше отвечать не буду дабы не разводить лишнего оффтопика и флейма.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[29]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 14.09.06 06:11
    Оценка: +1
    Здравствуйте, Turtle.BAZON.Group

    Одно заключительное пояснение.

    TBG>После чего я не согласился с вами не в ситуации оценки языка Eiffel как такового для целей общей разработки, а с тем, что само состояние продаж языка и его сред разработки не может служить основанием для подобных заявлений. Вот язык регулярных выражений, например, тоже не может рассматриваться как язык для реализации новых проектов, однако, ему это не мешает решать свои задачи. Если есть сайт (а его нужно содержать), значит, это кому-то надо. То, что по вашим параметрам язык вам не подошел — не беда, со всяким бывает. То, что по вашему мнению маркетологи допустили досадный промах при распространении языка всем и вся — возможно, вы и правы, но какое это отношение имеет именно к самому языку?


    Самое непосредственное. Язык программирования не является самодостаточным. Это не пирамида Хеопса, которая будет стоять еще тысячу лет сама по себе. Язык должен развиваться и привлекать к себе новых пользователей (именно новых, поскольку старые проекты в конце концов завершаются). И если привлечение новых пользователей не происходит именно из-за маркетинга, то именно маркетинг роет языку яму. А сам язык, между тем, хороший, мне очень понравился.

    Но, ситуация с ним сильно напоминает историю с OS/2, когда технически более совершенная система была загублена маркетингом IBM-а и зачахла без новых пользователей. Хотя до сих пор является (являлась?) мейнстримом в отдельных нишах, например, в качестве ОС для банкоматов.

    TBG>За сим прошу откланяться, вам большой поклон за поддержание беседы, но по этой теме больше отвечать не буду дабы не разводить лишнего оффтопика и флейма.


    Вам так же спасибо за то, что обсуждение не перешло на личности. Согласен, тему пора закрывать, т.к. точки зрения друг друга мы определили.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Вопрос к Sinclair
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 14.09.06 09:06
    Оценка:
    А можно узнать, с чем ты так настойчиво не согласен?
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[3]: Снова про парадигму
    От: Klapaucius  
    Дата: 14.09.06 12:03
    Оценка: 75 (2) +5 :)
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Да не объективным, а объектным. Объектное определение ссылается на объект, субъектное — на субъект. Объектное определение может быть субъективным.


    Понятно. Но я уже говорил, что обсуждать проблемы дзен-дубизмов я не в настроении.
    Речь шла о пересылке сообщений, вопросах реализации этой переылки и прочем.
    Не вижу никаких оснований ссылаться на поределение "парадигмы ООП". Но даже если ссылаться на это определение, то для доказательства его непригодности не достаточно упомянуть о том, что оно ссылается на викикпедическое определение самого понятия "парадигма" к которому у вас субъективные претензии на том основании, что ваш взгляд на взгляд — совсем другой.
    Особенно в данном случае забавным виглядит альтернатива — мнение, аргументированное незнанием (тут, конечно, все в порядке или просто придираться не хочется?).

    ГВ>Значит, общество не до конца понимает суть явления, раз оперирует терминологией на основе субъектных определений.


    И что? Почему это может помешать оперированию именно такой терминологией?

    ГВ>>>Возвращаясь к упомянутой дискуссии. Адепт там был или не адепт — не суть важно. Важно, что он сказал правильную вещь про бездумное следование за большинством. А в случае с определением объекта через субъект так оно и есть.

    K>>Во первых, говоря о следовании за большинством и т.д. он доказывал преимущество малораспространенной терминологии перед широко распространенной, что противоречит назанчению терминологии. Я писал об этом.
    ГВ>Не надо ставить всё в очередной раз с ног на голову. Сравнивались определения терминов, данные Кеем и википедией. Википедическое на фоне Кеевского не смотрится по причинам, о которых я говорил. Но всё равно его пытаются навязать, ибо оно "общепринятое". Сие есть смешно и грустно одновременно.

    См. выше.

    K>>Вы сможете оспорить утверждение о том, что терминология нужна для того, чтобы люди говорили об одном и том же на одном языке? Отвечайте по существу, пожалуйста, не отвлекайтесь.

    ГВ>Я ответил по существу.

    Нет. Я выдвинул тезис: "Необщепринятая терминология не решает поставленные перед ней задачи"
    Я обосновал этот тезис.
    Возражения было аж целых два.
    1) Придирка к употреблению слова "адепт" выше по течению темы.
    2) Претензия к определению термина "парадигма" в Википедии. Т.е. даже не к определению ООП, а к определению, на которое из статьи ООП есть ссылка.
    Эти два возражения по существу?

    Ответте на простой вопрос: как терминология поможет людям говорить об одном и том же, если с этой терминологией почти никто не знаком. Не надо сетовать на несовершенство мира. просто ответте.

    ГВ>>>>>На самом деле, "правильны" только те значения терминов, которые были им присущи при их появлении.

    K>>>>Выходит, яблоко можно правильно назвать только на языке Адама и Евы? Вот умора!
    ГВ>>>Причём тут конкретный язык?
    K>>При том, что система терминов — это язык.
    ГВ>Просклоняйте "глокая куздра" ради смеха.

    Еще одно возражение по существу.

    ГВ>>>"Яблоком" же не стали называть, например, абрикосы?

    K>>Вы считаете, что невозможен язык, в котором абрикосу будет соответствовать языковой знак "яблоко"?
    ГВ>Возможен.

    Тогда в чем критерий "правильности". Все что от Вас требуется — дать критерий "правильности" терминологии. Я свой критерий дал.

    K>>Вы вкурсе, что отношение между объектом, определяемым языковым знаком и языковым знаком асимметрично?

    ГВ>Естественно. Это как раз стимул для развития и уточнения терминологии. Но причём здесь может оказаться "взгляд"?

    Каким образом это стимул? Скорее уж это показатель бессмысленности уточнения. И бессмысленности претензй к слову "взгляд".

    K>>Вы считаете что термин "абрикос" для плода Prunus armeniaca в группе людей называющих этот плод "яблоком" адекватен?

    ГВ>Зависит от контекста.

    Контекст описан. Могу разжевать еще подробнее. Дано:
    5 человек, называющих плод prunus armeniaca яблоком.
    1 человек знает, что эти пять называют плод prunus armeniaca яблоком.
    1 человек называет плод prunus armeniaca абрикосом. Он знает, что так называют его еще миллион людей, но их здесь сейчас нет.
    5 человек не в курсе, что плод prunus armeniaca можно назвать абрикосом.

    Вопрос: Является ли в данной ситуации языковой знак "абрикос" адекватным термином для обозначения плода prunus armeniaca.
    Решит ли данная терминология основную проблему которую она призвана решить — помочь этим шести человекам говорить об одном и том же одними словами?

    А вообще в том и дело, что это зависит от контекста. К какой-то внеконтекстной "правильности" не существует.

    ГВ>Публичных навязываний подобной терминологии я пока не замечал.


    Опять кругом враги. Выходит, если Вы приезжаете в Бразилию, то Вам там начинают "публично навязывать" португальский язык?
    В котором еще, небось, всяких глюков, багов и "взглядов" полно?
    Какое вопиющее прищемление прав человека! Наверное, на них нужно надавить через ООН, чтобы они все там выучили "правильный" язык.

    ГВ>>>Кроме того, яблоком не называют, например, "взгляд из-под подушки в невечернем свете закатной Луны".

    K>>Почему? Потому, что это общепринято? Что еще мешает называть это именно так?
    ГВ>Откуда я знаю.

    Да этого никто не знает. На философии языка свернулись лучшие философские мозги. Чем больше Вы будете об этом думать, тем лучше понимать насколько слово "правильность" в данном случае смехотворно.

    ГВ>Видимо, то, что большинство таки не одни лишь законы физики усвоило. Это хорошо и хорошо весьма.


    А с философией, похоже, не все так радужно.

    K>>>>На самом деле, как это не печально, быть может, никакой истины не существует. Есть вероятность для еденицы и статистика для множества едениц. И все! Самое лучшее, что мы можем себе позволить, это средняя темпмература по больнице.

    ГВ>>>Угу. И это и есть конкретный и точный ответ на вопрос: "Какова средняя температура по больнице?"
    K>>На этот вопрос не существует конкретного и точного ответа, как раз потому, что этот вопрос не точен и не конкретен. Объяснять почему?
    ГВ>Угу, потому что не указаны временные рамки и методика измерения температуры как минимум.

    Про "как минимум" — это Вы чертовски правильно подметили. Вы можете сколько угодно падать в бесконечную бездну конкретизации и так до конкретности никогда и не долететь.

    K>>Или вы имеете в виду, что точный ответ на вопрос "какова средняя температура по больнице" — это слова "это средняя температура по больнице". Формально — это верно, но никакой информации этот ответ не содержит.

    ГВ>Это уже словоблудие. Понятно, что предполагается упоминание какой-то конкретной цифры.

    Какое-то конкртеное и точное число. С этого места поподробнее, пожалуйста. С какой точности начинается конкретность, а с какой кнкретности — точность?
    Начиная с какого знака после запятой это будет точный ответ?

    ГВ>>>Но это не то же самое, что и: "Какова температура Васи Пупкина?"

    K>>Средняя температура по Васе Пупкину?
    ГВ>Смешно, спасибо.

    Не за что. Вот когда этого не понимают — уже не смешно.
    Думаете, бывает температура, которая не "средняя по"?

    K>>>>Выходит, что мифическая тирания большинства это не во всех случаях тирания глупости? И наоборот тоже? Именно об этом я и говорю.

    ГВ>>>Да, разумеется. Я и не пытаюсь оспаривать это самое "не всегда". Это вообще параллелное рассуждение. Я говорю, что бессмысленно требовать от следования за большинством, только потому, что это большинство. Не видите разницы?
    K>>Какое совпадене! Я говорю о том же.
    ГВ>Я потрясён. К чему тогда весь Ваш спич?

    Я, знаете ли уже не первый день недоумеваю — к чему весь Ваш спич. Кое-каие предположения есть, но не более того.

    K>>Не осудили. Вы просто пересказали высказывание автора своими словами извратив при этом смысл так, чтобы у любого читателя не потрудившегося ознакомится с оригинальной фразой и ее контекстом была возможность осудить автора самостоятельно, причем за то, в чем он вовсе не виноват.

    ГВ>Мне совершенно не важно, что автор хотел сказать. Важно, в чём это выразилось.

    Это выразилось во многих впечатлениях от этого высказывания, все они индивидуальны и их невозможно рассматривать отдельно от самого впечатляющегося. Другими словами, Ваши фантазии по поводу автора для Вас важнее, чем фантазии автора по поводу его слов.
    Для меня, кстати, тоже. Это вообще распространенный подход.

    K>>Что характерно, когда я проделал то же самое с Вашей фразой — Вам это совсем не понравилось. с чего бы это?

    ГВ>С какой фразой? Признаться, я немного растерялся.

    Смотрите где-то поблизости.

    ГВ>>>Скорее уж добрая воля отсутствует у тех, кто идёт за большинством ради большинства.

    K>>А у тех, кто за меньшинством ради меньшинства?
    ГВ>А никто не предлагает идти за меньшинством ради меньшинства. С чего Вы это взяли?

    Я знаю до черта примеров, когда гордятся противоположным общим местом, как оригинальным собственным мнением.
    Никто, кстати, и не предлагал идти за большинством ради большинства, но вы этого не заметили.

    K>>И вообще, здесь-то причем добрая воля?

    ГВ>Задайте этот вопрос себе.

    Задал. Отвечаю: не причем.

    K>>>>Ну да, кое какой контекст доступен, пофантазировать можно, вот только на контекст, который в головах участников обсуждения ссылку не дать.

    ГВ>>>А он как раз и не важен.
    K>>Докажите.
    ГВ>А какая разница, что происходит в голове у спорщика? Думайте о чём хотите! Важно, в чём это выражается.

    см. выше.
    Думаете, спор происходит не в головах? Он где-то физически существует?
    Думаете, если мы напишем на листочке слово "абрикос", потом человечество исчезнет, через тысячу лет прилетят инопланетяне, покрошат листочек с надписью в какой-нибудь онтологический зафигайзер и получат на выходе свежий абрикос?
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re[27]: Оффтопик: Nemerle
    От: GlebZ Россия  
    Дата: 14.09.06 14:27
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Нет, не приходило. Лисп является тем функциональным ископаемым, на котором построены все остальные, могущие похвастаться, что обладают тем, чего нет в мейнстриме. А мейнстрим сейчас медленно, но уверенно переваривает и впитывает из этого всё лучшее.


    B Graph Rewriting тоже?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[37]: Оффтопик: Nemerle
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 14.09.06 14:52
    Оценка: -2
    Здравствуйте, WolfHound, Вы писали:

    WH>А чего тут не понятного? Это опциональный код которого может и не быть. Он не нужен компилятору для работы.

    WH>И хардкодить его в основной АСТ просто верх кривизны.

    Это в C# и в Java — "хардкодить". В ST такой подход работает на ура.

    WH>>>Но прикол в том что у нас еще есть генератор кода которому начхать на то что к нему пришло унарный оператор или функция с одним параметром.

    ANS>>А как принтер отличает унарный оператор от функции с одним параметром?
    WH>В том куске кода что я приводил все есть. Если ты не в состоянии его понять то почему ты судишь о pattern-mattching'е.

    А ты про такое?

    TT.TExpr.Call (TT.TExpr.OpCode (name), [parm1, parm2], _) =>

    vs.

    | TT.TExpr.Call (func /* PExpr */, parms /* list [Parm] */, _) =>

    Тут таже фигня, что я говорил раньше — в ОО программе никто не будет совать кучу параметров в масив, а потом выковыривать из него параметры кучей if-ов и switch-ей. (И я не понимаю, почему адепты Nemerle считают это обычной практикой в C#). Так что, для унарного и бинарного вызова был бы не один класс, а два изначально. Что касается унарного вызова против вызова функции, то у них всё же различаются структуры (см. на свои же примеры) — это стопроцентный кандидат на то, что тут будут разные классы.
    Так что, мимо тазика.

    WH>А то что ты не понимаешь pattern-mattching это твои личные проблеммы.


    Если "понимание" это уверенность в том, что патерн-матчинг это заменитель if-ов, то я лучше побуду не понимающим.

    ANS>>Короче, меня абсолютно не волнует ни пригодность патерн-матчинга, ни пригодность ООП для создания AST. Я просто в очередной раз хотел напомнить, что если что-то сравниваете, то сравнивать нужно корректно. А трансляция "один в один" кода из парадигмы в парадигму это профанация.

    WH>Ну так давай сравнивать.
    WH>Перепиши те несколько строк что я приводил в ОО стиле.
    Хм.
    Автор: Andrei N.Sobchuck
    Дата: 12.09.06


    ЗЫ. Кстати, в многометровой "портянке" примера по ссылке я с трудом нашел начало функции, что-бы посмотреть сигнатуру. Ваша интеграция для студии в каком виде код отображает?
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[38]: Оффтопик: Nemerle
    От: WolfHound  
    Дата: 14.09.06 16:45
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Это в C# и в Java — "хардкодить". В ST такой подход работает на ура.

    Какой простите? Загонять в основную объектную модель левые функции?

    ANS>Тут таже фигня, что я говорил раньше — в ОО программе никто не будет совать кучу параметров в масив, а потом выковыривать из него параметры кучей if-ов и switch-ей. (И я не понимаю, почему адепты Nemerle считают это обычной практикой в C#).

    Причем тут C#? Непереводи тему.
    ANS>Так что, для унарного и бинарного вызова был бы не один класс, а два изначально.
    А если тринарный появится?
    ANS>Что касается унарного вызова против вызова функции, то у них всё же различаются структуры (см. на свои же примеры) — это стопроцентный кандидат на то, что тут будут разные классы.
    Еще раз ради упрощения печати усложнять остальной код (который гораздо сложнее) это просто маразм.
    ANS>Так что, мимо тазика.
    Нет. В типизаторе есть куча мест где не делается различий между операторами и вызовами функций.
    Введение дополнительных типов приведет к значительному разбуханию и дублированию кода.

    ANS>Если "понимание" это уверенность в том, что патерн-матчинг это заменитель if-ов, то я лучше побуду не понимающим.

    if это ветвление. pattern-matching это тоже ветвление только болие навороченое.
    Так вот если pattern-matching это не заменитель if'ов в сложных случаях то я не знаю что это.

    WH>>Перепиши те несколько строк что я приводил в ОО стиле.

    ANS>Хм.
    Автор: Andrei N.Sobchuck
    Дата: 12.09.06

    Мимо. Вносить печать в AST это всеравно что яблоку прицепить метод СкормитьЁжику.
    В конце концов паттерн посетитель придумали не случайно.

    ANS>ЗЫ. Кстати, в многометровой "портянке" примера по ссылке я с трудом нашел начало функции, что-бы посмотреть сигнатуру.

    В твоем варианте ты бы вобще концов не нашол ибо этот код был бы размазан по сотне классов в кождом из которых сотни методов.

    ANS>Ваша интеграция для студии в каком виде код отображает?

    Ну примерно как C#. Только там все очень сыро и много недоделок но над этим работают.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[25]: Оффтопик: Nemerle
    От: Андрей Хропов Россия  
    Дата: 14.09.06 16:58
    Оценка: :)
    Здравствуйте, FR, Вы писали:

    FR>Программирование на шаблонах C++ по сути функциональщина, поэтому те кто хорошо разбираются с шаблонами, обычно легко обучаются и функциональному программированию.


    Ну на таком уровне TMP (вроде факториалов на шаблонах) пишет все-таки не так уж много маньяков типа Александреску .
    Re[4]: Снова про парадигму
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 14.09.06 17:24
    Оценка:
    Здравствуйте, Klapaucius, Вы писали:

    ГВ>>Да не объективным, а объектным. Объектное определение ссылается на объект, субъектное — на субъект. Объектное определение может быть субъективным.


    K>Понятно. Но я уже говорил, что обсуждать проблемы дзен-дубизмов я не в настроении.

    K>Речь шла о пересылке сообщений, вопросах реализации этой переылки и прочем.

    Нет, это уже забавно. Не обижайтесь, но развивать нашу дискуссию до спора о том, в чём был главный дар Smalltalk (было там и такое) я не буду.

    K>Не вижу никаких оснований ссылаться на поределение "парадигмы ООП".


    Вы же читали дискуссию. Там упомянуто ООП и википедия. Определение ООП ссылается на определение парадигмы.

    — Что такое ООП?
    — Это — парадигма.
    — Что такое парадигма?
    — парадигма — это взгляд на программу...

    Если это для Вас не основание для упоминания одиозной "парадигмы", то... То я даже не знаю, что и сказать.

    K>Но даже если ссылаться на это определение, то для доказательства его непригодности не достаточно упомянуть о том, что оно ссылается на викикпедическое определение самого понятия "парадигма" к которому у вас субъективные претензии на том основании, что ваш взгляд на взгляд — совсем другой.


    Взгляд — это действие субъекта ("программист глядит на программу"). Это не может быть частью определения, претендующего на большее, чем банальный трёп.

    K>Особенно в данном случае забавным виглядит альтернатива — мнение, аргументированное незнанием (тут, конечно, все в порядке или просто придираться не хочется?).


    В противовес субъектному определению любое объектное подходит.

    ГВ>>Значит, общество не до конца понимает суть явления, раз оперирует терминологией на основе субъектных определений.

    K>И что? Почему это может помешать оперированию именно такой терминологией?

    Да нет, ничего не может помешать. Каждый волен сходить с ума по-своему.

    K>>>Вы сможете оспорить утверждение о том, что терминология нужна для того, чтобы люди говорили об одном и том же на одном языке? Отвечайте по существу, пожалуйста, не отвлекайтесь.

    ГВ>>Я ответил по существу.

    K>Нет. Я выдвинул тезис: "Необщепринятая терминология не решает поставленные перед ней задачи"

    K>Я обосновал этот тезис.
    K>Возражения было аж целых два.
    K>1) Придирка к употреблению слова "адепт" выше по течению темы.
    K>2) Претензия к определению термина "парадигма" в Википедии. Т.е. даже не к определению ООП, а к определению, на которое из статьи ООП есть ссылка.
    K>Эти два возражения по существу?

    Первое — не по существу, но принимается в качестве заслуженного упрёка. Второе — по существу, но мой контртезис таков: субъектными определениями нельзя пользоваться. Определение ООП включает в себя "взгляд" в составе описания (через "парадигму"). Ergo, это определение некорректно по факту, его даже рассматривать нельзя в качестве определения.

    K>Ответте на простой вопрос: как терминология поможет людям говорить об одном и том же, если с этой терминологией почти никто не знаком. Не надо сетовать на несовершенство мира. просто ответте.


    Прочитают нужные книжки и всё поймут, не надо недооценивать людей. А так они говорят, на самом деле, каждый о своём, состязаясь в силе эмоционального воздействия и мощности глотки.

    ГВ>>>>"Яблоком" же не стали называть, например, абрикосы?

    K>>>Вы считаете, что невозможен язык, в котором абрикосу будет соответствовать языковой знак "яблоко"?
    ГВ>>Возможен.

    K>Тогда в чем критерий "правильности". Все что от Вас требуется — дать критерий "правильности" терминологии. Я свой критерий дал.


    Стоп. Причём тут критерий "правильности"? Я не пытался сказать, что нечто однозначно и навсегда правильно, хотя склонен считать, что... Вы читали. Ещё раз повторяю набор посылок и моё возражение в схематичной форме:

    1. Понятию "ООП" даётся субъектное определение А.
    2. Это определение принимается как "общепринятое".
    3. В дискуссии определение А явно противопоставляется объектному определению Б на основании п.2

    Моё возражение. В силу заведомой некорректности определение А нельзя принимать как истинное. В данном случае в п.3 сделано две ошибки: а) применена аргументация коллективом и б) постулируется истинность заведомо неверифицируемого определения. Наличие ошибки б) служит усилением тезиса о недопустимости "следования за большинством" на основании одного лишь количественного преимущества оного, поскольку совершение ошибки "большинством" тут налицо.

    K>>>Вы вкурсе, что отношение между объектом, определяемым языковым знаком и языковым знаком асимметрично?

    ГВ>>Естественно. Это как раз стимул для развития и уточнения терминологии. Но причём здесь может оказаться "взгляд"?
    K>Каким образом это стимул? Скорее уж это показатель бессмысленности уточнения. И бессмысленности претензй к слову "взгляд".

    Ну нам же нужно обеспечить недвусмысленность терминологии, правильно?

    K>>>Вы считаете что термин "абрикос" для плода Prunus armeniaca в группе людей называющих этот плод "яблоком" адекватен?

    ГВ>>Зависит от контекста.

    K>Контекст описан. Могу разжевать еще подробнее. Дано:

    K>5 человек, называющих плод prunus armeniaca яблоком.
    K>1 человек знает, что эти пять называют плод prunus armeniaca яблоком.
    K>1 человек называет плод prunus armeniaca абрикосом. Он знает, что так называют его еще миллион людей, но их здесь сейчас нет.
    K>5 человек не в курсе, что плод prunus armeniaca можно назвать абрикосом.

    Всё ясно, но пример не в кассу. Здесь нужно противопоставлять именно "взгляд" как свойство субъекта и некое название вещи как пример объектного определения. Простите, Вы действительно понимаете суть моих возражений или нет?

    K>Вопрос: Является ли в данной ситуации языковой знак "абрикос" адекватным термином для обозначения плода prunus armeniaca.


    В даному случае пример не адекватен по существу. См. выше.

    K>Решит ли данная терминология основную проблему которую она призвана решить — помочь этим шести человекам говорить об одном и том же одними словами?


    K>А вообще в том и дело, что это зависит от контекста. К какой-то внеконтекстной "правильности" не существует.


    Конечно. Но вполне себе существуют отличия корректного и некорректного описания предмета.

    ГВ>>>>Кроме того, яблоком не называют, например, "взгляд из-под подушки в невечернем свете закатной Луны".

    K>>>Почему? Потому, что это общепринято? Что еще мешает называть это именно так?
    ГВ>>Откуда я знаю.
    K>Да этого никто не знает. На философии языка свернулись лучшие философские мозги. Чем больше Вы будете об этом думать, тем лучше понимать насколько слово "правильность" в данном случае смехотворно.
    ГВ>>Видимо, то, что большинство таки не одни лишь законы физики усвоило. Это хорошо и хорошо весьма.
    K>А с философией, похоже, не все так радужно.

    Трудно сказать. Можно спорить о точности и непротиворечивости выделения объекта, но уж заметить разницу между субъектом и объектом, ИМХО, вовсе не сложно.

    K>>>>>На самом деле, как это не печально, быть может, никакой истины не существует. Есть вероятность для еденицы и статистика для множества едениц. И все! Самое лучшее, что мы можем себе позволить, это средняя темпмература по больнице.

    ГВ>>>>Угу. И это и есть конкретный и точный ответ на вопрос: "Какова средняя температура по больнице?"
    K>>>На этот вопрос не существует конкретного и точного ответа, как раз потому, что этот вопрос не точен и не конкретен. Объяснять почему?
    ГВ>>Угу, потому что не указаны временные рамки и методика измерения температуры как минимум.

    K>Про "как минимум" — это Вы чертовски правильно подметили. Вы можете сколько угодно падать в бесконечную бездну конкретизации и так до конкретности никогда и не долететь.


    Верно, верно. Но я не буду называть "среднюю температуру", скажем, "вектором ощущений медперсонала". Разницу понимаете? Ну или уж потребую верифицируемой шкалы ощущений.

    K>>>Или вы имеете в виду, что точный ответ на вопрос "какова средняя температура по больнице" — это слова "это средняя температура по больнице". Формально — это верно, но никакой информации этот ответ не содержит.

    ГВ>>Это уже словоблудие. Понятно, что предполагается упоминание какой-то конкретной цифры.
    K>Какое-то конкртеное и точное число. С этого места поподробнее, пожалуйста. С какой точности начинается конкретность, а с какой кнкретности — точность?
    K>Начиная с какого знака после запятой это будет точный ответ?

    Это зависит от требований медицины. Безусловно, требования эти могут в перспективе поменяться и измерения будут проводиться, например, с точностью до 0,0001 градуса в двадцати точках на протяжении суток. Тогда термин "средняя температура" обретёт несколько иной смысл.

    Более того, термометры могут даже поверять в метрологии, так как шкала температур, тоже, в общем, результат принятия определённого соглашения об измерениях. Правда, я не уверен, что в этом соглашении принимало участие некое "общественное большинство", за исключением большинства из каких-то научных организаций. И заметьте, эталон тепературы сугубо объектен.

    ГВ>>>>Но это не то же самое, что и: "Какова температура Васи Пупкина?"

    K>>>Средняя температура по Васе Пупкину?
    ГВ>>Смешно, спасибо.
    K>Не за что. Вот когда этого не понимают — уже не смешно.
    K>Думаете, бывает температура, которая не "средняя по"?

    В сущности — согласен.

    K>>>Не осудили. Вы просто пересказали высказывание автора своими словами извратив при этом смысл так, чтобы у любого читателя не потрудившегося ознакомится с оригинальной фразой и ее контекстом была возможность осудить автора самостоятельно, причем за то, в чем он вовсе не виноват.

    ГВ>>Мне совершенно не важно, что автор хотел сказать. Важно, в чём это выразилось.
    K>Это выразилось во многих впечатлениях от этого высказывания, все они индивидуальны и их невозможно рассматривать отдельно от самого впечатляющегося. Другими словами, Ваши фантазии по поводу автора для Вас важнее, чем фантазии автора по поводу его слов.

    Вы действительно правильно прочли то, что я написал?

    K>Для меня, кстати, тоже. Это вообще распространенный подход.


    А... эвона оно как... А я-то думаю, с чего это всё ко мне в мозг залезть пытаетесь.

    ГВ>>>>Скорее уж добрая воля отсутствует у тех, кто идёт за большинством ради большинства.

    K>>>А у тех, кто за меньшинством ради меньшинства?
    ГВ>>А никто не предлагает идти за меньшинством ради меньшинства. С чего Вы это взяли?

    K>Я знаю до черта примеров, когда гордятся противоположным общим местом, как оригинальным собственным мнением.


    Я тоже. И что? В случае упомянутой дискуссии это было не так.

    K>Никто, кстати, и не предлагал идти за большинством ради большинства, но вы этого не заметили.


    Странно. К чему тогда была аргументация большинством? По сути она приводит к необходимости принять заведомо некорректное определение предмета дискуссии.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[30]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 14.09.06 18:13
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>В лиспе не было вывода типов, ленивости, паттерн матчинга в общем очень многого из того что появилось в новых функциональных языках.


    Оно появлялось паралельно с развитием Лиспа и сегодня все это есть в различных его диалектоах.

    FR>Да и вообще лисп не чистый функциональный язык.


    Чистых на 100% вообще быть не может. Так как это сфероконь вакумный. Кому нужен язык не умеющий общаться с внешним миром? А такое общение — это побочный эффкт.

    Фнукционаьный язык — это не язык где нет изменения переменных, а язык позволяющий удобно и продуктивно писать в функцональном стиле.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[28]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 14.09.06 18:13
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    WH>>Особенно мне интересно что ты будешь делать с подобными выкрутасами:


    ANS>Аналог именно этого не потребует даже визитора!


    Папа мне любил говаривать в детстве — "Трепачь — находка для шпионов.". Похоже я теперь понял о ком он говорил.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[30]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 14.09.06 18:13
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Потребует 1-го (одного) виртуального метода под названием prettyPrint принимающего 1 (один) параметр — поток вывода и классы в количестве соответсвующем количеству матчей. Или тебя пугает необходимость создавать классы в ОО программе?


    Охриниельное решение. Ты мега-крут!

    Если серьезно, то попробуй все же изучить что такое паттерн-матчинг. Думаю после этого ты подобную глупость уже не скажешь.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[32]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 14.09.06 18:13
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>
    ANS>class UnaryOperator
    ANS>    prettyPrint(outputStream) {
    ANS>        outputStream
    ANS>            .append(name)
    ANS>            .append('(')
    ANS>            .append(parm)
    ANS>            .append(')')
    ANS>    }
    ANS>

    ANS>Ы?

    Ты прикидывашся или действительно не понимаешь что это сотая того кода который тебе надо наколбасить чтобы воспроизвести то что привел Вольфхануд?

    Паттерны приведенные Вольфхаундом разбирают конкретные случае сочетания веток АСТ и форматируют вывод в зависимости от этого. Ты же привел примитивнейший случай в котором всегда один параметр и пофику какой метод. Параметров же может быть ноль, один, два... двадцать пять. Метод может быть констуктором или еще чем-то. В коде Вольфхаунда это анализируется. Только вместо кучи if-ов есть один паттерн.

    В этом и сила паттерн-матчинга. Он позволяет декларативно отобразить то, что на языках без паттерн-матчинга тербует написания тучи императивного кода с проверками и выборами.

    Так что твой любимый Смолток ничем не отличается от C#. Кон на нем всгде будет длинее по сравнению с аналогичным написанным на языке с паттерн-матчингом.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[38]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 14.09.06 18:13
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>А ты про такое?

    ANS>

    ANS> TT.TExpr.Call (TT.TExpr.OpCode (name), [parm1, parm2], _) =>

    ANS>vs.
    ANS>

    ANS>| TT.TExpr.Call (func /* PExpr */, parms /* list [Parm] */, _) =>

    ANS>Тут таже фигня, что я говорил раньше — в ОО программе никто не будет совать кучу параметров в масив, а потом выковыривать из него параметры кучей if-ов и switch-ей. (И я не понимаю, почему адепты Nemerle считают это обычной практикой в C#).

    Ты не трепись по чем заря. Ты просто тупо напиши аналогичный код и увидишь, что он в разы длинее и запутаннее. А то твои расуждения выглядят как попытка уйти от ответа.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[31]: Оффтопик: Nemerle
    От: FR  
    Дата: 14.09.06 18:54
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, FR, Вы писали:


    FR>>В лиспе не было вывода типов, ленивости, паттерн матчинга в общем очень многого из того что появилось в новых функциональных языках.


    VD>Оно появлялось паралельно с развитием Лиспа и сегодня все это есть в различных его диалектоах.


    Только по моему часто сначала появлялось на других языках

    FR>>Да и вообще лисп не чистый функциональный язык.


    VD>Чистых на 100% вообще быть не может. Так как это сфероконь вакумный. Кому нужен язык не умеющий общаться с внешним миром? А такое общение — это побочный эффкт.


    Ну хаскель притендует

    VD>Фнукционаьный язык — это не язык где нет изменения переменных, а язык позволяющий удобно и продуктивно писать в функцональном стиле.


    Re[15]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 00:12
    Оценка: 1 (1) +1 -1
    Здравствуйте, eao197, Вы писали:

    E>Идея писать код без учета т.н. exception safety не менее ущербна.


    У меня с этим проблем нет.

    E>Именно поэтому писать exception safety код очень сложно и этим часто пренебрегают. Или даже не догадываются о том, что написанный код не является exception safety.


    Говори за себя — "Мне на С++ писать exception safety код очень сложно...".

    VD>>К тому же закладываться или не закладываться здесь в общем-то не так важно. Важно другое. Важно, что ты уже не можешь читая код делать предположение о его последовательности. Так читая код на C# я могу быть уверненым, что длинное выражение что бы не вычилсялось всегда попадет в переменную, если оно стоит с права от присонения ей значения. И я всегда уверен, что управление из этого вражения перейдет на следующую строку, а не убежит черти куда.


    E>Такие рассуждения еще можно применять к C (и то без учета всяких longjmp-ов) или к Виртовскому Паскалю.


    Ерунду говоришь. У тебя очень неврено мнение о том что такое исключения и зачем они нужны. Исключения придуманы для того чтобы писать программу так как будто их вообще не существует. А уж они нужны чтобы можно было если программа попала в состояние в котором не может продолжать корректную работу можн было бы или завершить программу или привести ее в рабочее состояние.

    Если подходить к ислючениям так, то они никогда не нарушают вычислительную модель, а является благом. Если же их рассматривать как средство неструктурной передачи управления, то конечно твоя жизнь будет очень сложна, и я бы даже сказал, мрачна.

    E> Но вот по отношению к современным языкам, в которых бросание исключений является основным способом информирования о любых ошибках, такие рассуждения звучат, по меньшей мере, наивно.


    Твое заблуждение заключается в том, что ты считаешь исключения "способом информирования об ошибках". А это не так. Ислючение не информирует. Оно просто живет в другом измерении. Это средство востановиться или умереть, а не информировать кого-то.

    E>Для разминки, уверен ли ты, что переменная dataRows всегда получит причитающееся ей значение в таком примере:

    E>
    E>dataRows = FastCsvParser.makeParser( parsingOptions ).load(
    E>    fileName + makeDataSpecificExtension( dataParams ) ).getAllRows();
    E>


    Уверен. Хотя код конечно бредовый.

    E>А теперь представь, что makeDataSpecificExtension это блок в SmallTalk или Ruby.


    Тогда не уверен.

    E> Выполненый из него return прерывает данное выражение точно так же, как и выброшенное где-нибудь в load() исключение.


    Не не так же. В логике моей программы нет нарушения структурности. А исключение это ИСКЛЮЧИТЕЛЬНАЯ СИТУАЦИЯ которая не вписывается в логику моей программы. Ты же нахватался модных слов вроде "exception safety" вложив в них совершенно иной смысл. Так что ищи проблему не в исключениях, а в твоем их восприятии.

    E> Поэтому, если использующий блоки кода фрагмент написан в соответствии с принципами exception safety, то ему безразлично, был ли он прерван исключением или нелокальным return-ом.


    Нда. Код написанный в стиле реализации ветвления на исключениях является кошмаром. И я вам желаю от чистого сердца с ним никогда не связываться. А Смолтокерам выражаю свои искренние соболезнования. Они не только используют скрипт прошлого поколения, но еще и вынуждены жить в мире коде корректно выражение в соврешенно нормальных условиях может никогда не вернуть результат. Для меня это приговор языку. Но если кому-то нравятся экстравогантности, то ради бога.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[32]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 00:12
    Оценка:
    Здравствуйте, FR, Вы писали:

    VD>>Оно появлялось паралельно с развитием Лиспа и сегодня все это есть в различных его диалектоах.


    FR>Только по моему часто сначала появлялось на других языках


    Ошибашся. Я как-то читал, что эксперемены по паттерн-матчингу были за долго до МЛ-я.

    FR>Ну хаскель притендует


    На место в кунскамере?

    VD>>Фнукционаьный язык — это не язык где нет изменения переменных, а язык позволяющий удобно и продуктивно писать в функцональном стиле.


    FR>


    А что ты улыбашся? Это между прочим общепринятое определение. И те же ML-языки только ему и удовлетворяют.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[37]: А как оно в Nemerle?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 00:12
    Оценка:
    Здравствуйте, Beam, Вы писали:

    VD>>Ага. Ужасно неудобно. Потому в C# и Nemerle это делается очень редко. Вместо этого используется using. Знаком с такой конкцепцией?


    B>Знаком. Синтаксический сахар.


    Ага. Он самый. У меня в коде он встречается постоянно. А вот try-finally почти отсуствует.

    B>Да я же говорю про другие грабли


    Какие?

    B> Пока что Вы избегаете давать ответ на мой вопрос.


    Ты бы вопрос что-ли сформулировал. А то ощущение, что ты просто не понимашь о чем говоришь. Ты говоришь о макросах как о функциях, что бессмыселнно.

    B> Посмотрите предыдущие посты. Вы пытаетесь уйти в сторону от обсуждения проблемы. Давайте не будем говорить о частностях. Смотрите шире.


    Я просто понимаю о чем говорю. Ты же похоже — нет.

    B>

    B>Пусть у нас есть макрос, с параметром body (код). И пусть этот параметр используется в середине макроса. Т.е. при развертывании макроса получится код:
    B>

    B>    // выполняем какой-то код 1
    B>    // здесь будет код $body
    B>    // выполняем какой-то код 2
    B>

    B>Если передать в этот макрос код, внутри которого есть return , то код 2 выполнен не будет.


    Написать:
    def a = { if (x) 1 else return 0; };

    в Немерле, как и в любом другом более менее продуманном современном языке невозможно физически.
    return не доступен внутри выражений. Он может быть только там где управление можно прервать. Другими словами return — это statment, а не expression (если тебе что-то говорят эти слова). И return не может передать управление черти куда. Только выйти из текущей функции. Вот это назвается соотвествовать правилам структурного программирования.

    И самое забавное. Пока ты тут отстаиваешь славные традиции сишного нелокального goto в том самом Немреле вообще можно обходиться без return. Оператор return в нем эмулируется. И реально используется очень редко.

    Вот такие вот тенденции. А вы тут стройными рядами идете к давно процденым граблям. Неужели лоб не жалко?

    B>Разве не эту проблему Вы увидели в блоках Smalltalk? Пока что я не услышал вразумительного ответа — все вокруг да около.


    Пока что ты так привык к граблям, что считашь их нормой. Разубедить тебя нельзя. Это вера. Если тебе действительно интересен ответ, то напрягись и прочти хоть что-то по принципам структурного программирования.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[30]: А как оно в Nemerle?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 00:12
    Оценка: +1
    Здравствуйте, Klapaucius, Вы писали:

    K>Вот это мне, как раз, не очень нравится, хотя почему такую возможность оставили я понимаю.


    Дык людям же нужно привыкнуть! Иначе они могут бросить язык раньше чем разбирутся в нем и смогут оценить отсуствие возможности попрыгать.

    K>Непонятно мне другое. Почему возможность прыгнуть в Nemerle является оправдание возможности прыгнуть (причем, как я понял, гораздо дальше) в смолтоке? Тут, конечно, были примеры по существу вопроса, как использование ^ помогает сократить код, но вот это вообще к делу отношения не имеет.


    Забвно, что код на том самом Немерле (чуть не сказал Мюнхаузене ) будет как минимум не длиннее. А реально гараздо более кратким так как тот же паттерн-матчинг даст фору любым выпендрежам с крышками. А уж о частичном применени функций и вообще о вычислениях над функциями и говорить не приходится.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[31]: А как оно в Nemerle?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 00:12
    Оценка:
    Здравствуйте, Beam, Вы писали:

    B>В Smalltalk тоже можно вообще не прыгать. Прыгание используется в тех же ситуациях, в которых оно используется в Java/C#. Заметьте, что и в них тоже можно не прыгать, а спокойненько дойти до конца метода.


    А, то есть пример был дан не как доказательство крутости, а как пример того как можно не далать.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[32]: А как оно в Nemerle?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 00:12
    Оценка:
    Здравствуйте, Klapaucius, Вы писали:

    K>ПОнятно, что в ряде случаев проблемными средствами можно продолжать пользоваться. Однако не стоит отрицать проблемность этих средств.


    Золотые слова, однако!
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[30]: Дополнение к посту Vermicious Knid
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 00:12
    Оценка:
    Здравствуйте, pavel74, Вы писали:

    P>Ну наконец-то . Полностью согласен, за это и любят динамические языки.


    Кто-то любит. Я лично за "это" недолюбливаю. Люблю знаете ли полагаться на компилятор, а не на тестирование.

    VD>>но с другой постоянно можно получить рантайм-ошибку. Это приводит к юнит тестированию на каждый чих и т.п.

    P>Тоже верно, просто каждый для себя делает свою оценку этих плюсов/минусов, на основе своего опыта. Теоретизировать на эту тему смысла нет.

    Это ты про фразу "за это и любят динамические языки"?

    P>И еще замечу такую странность , те кто реально программирует на динамических языках — этот недостаток не считают фатальным (в сравнению с получаемыми упрощениями). А те кто только теоритически рассуждает — считают фатальным.


    А я заметил другую странность. Когда какие-то фанатики прославляют свою любимую игрушку, то они очень часто пытаются записать тех кто с ними несогласен в эдаких теоретиков/незнаек рассуждающих о том, что в клаза не видели. Вот только проблема в том, что это не всегда так. Я вот не мало в свое мремя пописал на разных динамических языках. И обсуждаемые языки тоже смотрел. Так что и мнение смог выработать, и выбор сделал осознанно.

    P>Для реальной работы роль играет не токо на скоко в языке есть те или иные возможности, но и на скоко качетсвенны и функциональны IDE для них, а в этом плане с мегабаблом вкладываемым MC в VS и .Net тягаться уже сложнее.


    Вот тут полностью согласен. Но казалось бы аргумент явно не в пользу динамики.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[32]: Дополнение к посту Vermicious Knid
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 00:29
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>Совсем не обязательно. Достаточно того, чтобы метод, реализующий сложение, умел обрабатывать аргументы разных типов (что в случае динамической типизации выполняется элементарно, если все ожидаемые типы имеют одиаковый набор методов, использующихся в данном).


    Жык это еще хуже. Чтобы этот метод выбрать нужно взять каждый объект узнать его теальный тип (в массиве он ведь не приведенным к базовому типу вроде object лижит) и только потом вызвать метод. Причем все дожно быть по ссылке. Никакие джит-компиляторы тут ничего сделать не согут. Это будет опасный и тормозной код.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[33]: Дополнение к посту Vermicious Knid
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 15.09.06 05:04
    Оценка: 2 (2)
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, Eugene Beschastnov, Вы писали:


    EB>>Совсем не обязательно. Достаточно того, чтобы метод, реализующий сложение, умел обрабатывать аргументы разных типов (что в случае динамической типизации выполняется элементарно, если все ожидаемые типы имеют одиаковый набор методов, использующихся в данном).


    VD>Жык это еще хуже. Чтобы этот метод выбрать нужно взять каждый объект узнать его теальный тип (в массиве он ведь не приведенным к базовому типу вроде object лижит) и только потом вызвать метод. Причем все дожно быть по ссылке. Никакие джит-компиляторы тут ничего сделать не согут. Это будет опасный и тормозной код.


    Блин, ну Влад, ну это уже просто неприлично. Ты бы хоть немного изучил ту тему, по которой с таким апломбом высказываешься.

    VD> в массиве он ведь не приведенным к базовому типу вроде object лижит

    Объект всегда и везде лежит со своим собственным типом, ни к чему не приведённый. И виртуальной машине не требуется ничего дополнительно выяснять — класс объекта записан в самом объекте. При первом же взгляде на объект сразу видно его класс. Сам подумай — если бы тип лежал приведённым к чему-либо, то мы бы потеряли всю, хранящуюся в полях, созданных в классах, дочерних относительно того, к которому тип приведён.
    --
    Бесчастнов Евгений
    Re[33]: Оффтопик: Nemerle
    От: FR  
    Дата: 15.09.06 05:23
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, FR, Вы писали:


    VD>>>Оно появлялось паралельно с развитием Лиспа и сегодня все это есть в различных его диалектоах.


    FR>>Только по моему часто сначала появлялось на других языках


    VD>Ошибашся. Я как-то читал, что эксперемены по паттерн-матчингу были за долго до МЛ-я.


    Ну не знаю не силен в истории, может злобные функциональщики просветят
    Хотя вполне допускаю что многие из новых языков прототипировались на лиспе.

    FR>>Ну хаскель притендует


    VD>На место в кунскамере?


    Зря, вещь очень интересная, жаль у меня времени нет плотнее его изучить.

    VD>>>Фнукционаьный язык — это не язык где нет изменения переменных, а язык позволяющий удобно и продуктивно писать в функцональном стиле.


    FR>>


    VD>А что ты улыбашся? Это между прочим общепринятое определение. И те же ML-языки только ему и удовлетворяют.


    Да я согласен в общем. Просто по этому определению и руби и питон тоже функциональные языки.
    Re[33]: Дополнение к посту Vermicious Knid
    От: FR  
    Дата: 15.09.06 05:23
    Оценка: 1 (1)
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, Eugene Beschastnov, Вы писали:


    EB>>Совсем не обязательно. Достаточно того, чтобы метод, реализующий сложение, умел обрабатывать аргументы разных типов (что в случае динамической типизации выполняется элементарно, если все ожидаемые типы имеют одиаковый набор методов, использующихся в данном).


    VD>Жык это еще хуже. Чтобы этот метод выбрать нужно взять каждый объект узнать его теальный тип (в массиве он ведь не приведенным к базовому типу вроде object лижит) и только потом вызвать метод. Причем все дожно быть по ссылке. Никакие джит-компиляторы тут ничего сделать не согут. Это будет опасный и тормозной код.


    Конечно может быть и так как ты описываешь, если вызывающий код сам явно проверяет проверяет типизацию. Но для динамики гораздо полезнее думать в терминах сообщений, объект получает запрос если может обработать обрабатывает, если не может вылетает с исключением, то есть ровно наооборот тому что ты описал.
    А джит компиляторы это уже успешно делали до того как вообще менеджед языки со статической типизацией появились.
    Re[16]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 15.09.06 05:23
    Оценка: +1 -4
    Здравствуйте, VladD2, Вы писали:

    E>>Для разминки, уверен ли ты, что переменная dataRows всегда получит причитающееся ей значение в таком примере:

    E>>
    E>>dataRows = FastCsvParser.makeParser( parsingOptions ).load(
    E>>    fileName + makeDataSpecificExtension( dataParams ) ).getAllRows();
    E>>


    VD>Уверен. Хотя код конечно бредовый.


    using System;
    
    class MainApp 
    {
        public static int get(int x)
        {
        if (x > 5)
         {
         throw new System.NotSupportedException(); 
         }
        return x + 1;
        }
        
        public static void Main() 
        { 
            int x = get(10);
            Console.WriteLine(x);     
        }
    }
    Re[31]: Дополнение к посту Vermicious Knid
    От: FR  
    Дата: 15.09.06 05:23
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    P>>И еще замечу такую странность , те кто реально программирует на динамических языках — этот недостаток не считают фатальным (в сравнению с получаемыми упрощениями). А те кто только теоритически рассуждает — считают фатальным.


    VD>А я заметил другую странность. Когда какие-то фанатики прославляют свою любимую игрушку, то они очень часто пытаются записать тех кто с ними несогласен в эдаких теоретиков/незнаек рассуждающих о том, что в клаза не видели. Вот только проблема в том, что это не всегда так. Я вот не мало в свое мремя пописал на разных динамических языках. И обсуждаемые языки тоже смотрел. Так что и мнение смог выработать, и выбор сделал осознанно.


    Того что выделено не достаточно. Я тоже когда смотрел придерживался практически такого же мнения о динамике как ты сейчас. eao197 тоже помнится говорил здесь об этом же. А насчет пописал на разных динамических языках можешь сказать на каких именно и примерный объем кода.
    Re[16]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 15.09.06 05:46
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    E>>Идея писать код без учета т.н. exception safety не менее ущербна.


    VD>У меня с этим проблем нет.


    no comments

    E>>Именно поэтому писать exception safety код очень сложно и этим часто пренебрегают. Или даже не догадываются о том, что написанный код не является exception safety.


    VD>Говори за себя — "Мне на С++ писать exception safety код очень сложно...".


    Ok. Но более точно будет сказать так: "Мне тяжело писать exception safety код, вне зависимости от языка, на котором это делается". Просто потому, что когда исключения повсюду, очень легко забыть, что они повсюду.

    И черт побери, я бы очень хотел, чтобы среди всех окружающих меня программистов написанный именно мной код был самым плохим и не exception safe.

    Все остальное написанное тобой я могу назвать только чепухой. Либо ты не понимаешь, что такое exception safety (ой ли?), либо ты просто не хотел вдумчиво прочитать написанное мной и так же вдумчиво ответить. Если есть желание, то ответь, пожалуйста, нормально и по существу. Обвинения в незнании и непонимании оставь для кого-нибудь RSDN-овского новичка.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[31]: Дополнение к посту Vermicious Knid
    От: _rasta  
    Дата: 15.09.06 06:04
    Оценка: 1 (1) :)
    Здравствуйте, VladD2, Вы писали:

    VD>А я заметил другую странность. Когда какие-то фанатики прославляют свою любимую игрушку, то они очень часто пытаются записать тех кто с ними несогласен в эдаких теоретиков/незнаек рассуждающих о том, что в клаза не видели. Вот только проблема в том, что это не всегда так. Я вот не мало в свое мремя пописал на разных динамических языках. И обсуждаемые языки тоже смотрел. Так что и мнение смог выработать, и выбор сделал осознанно.


    эта фраза настолько абсрактна, что ее можно выдавайть обратно, с небольшими вариациями относительно динамичности/императивности языка, автору при любом высказывании про немерле/шарп
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[39]: Оффтопик: Nemerle
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 15.09.06 06:48
    Оценка: 1 (1) -3
    Здравствуйте, WolfHound, Вы писали:

    ANS>>Это в C# и в Java — "хардкодить". В ST такой подход работает на ура.

    WH>Какой простите? Загонять в основную объектную модель левые функции?

    Подгружать функции по мере необходимости.

    ANS>>Так что, для унарного и бинарного вызова был бы не один класс, а два изначально.

    WH>А если тринарный появится?

    Код прийдётся менять. Это для тебя проблема?
    В качестве упражнения, добавь сам туда поддержку тринарного оператора between-and.

    ANS>>Что касается унарного вызова против вызова функции, то у них всё же различаются структуры (см. на свои же примеры) — это стопроцентный кандидат на то, что тут будут разные классы.

    WH>Еще раз ради упрощения печати усложнять остальной код (который гораздо сложнее) это просто маразм.

    Еще раз, если ты попробуеш все эти варианты запихнуть в один класс, то получиш усложнение кода, иначе — простой нормальный код.

    ANS>>Так что, мимо тазика.

    WH>Нет. В типизаторе есть куча мест где не делается различий между операторами и вызовами функций.

    И что? Ты не знаеш как этого эфекта добится в ОО программе?

    WH>Введение дополнительных типов приведет к значительному разбуханию и дублированию кода.


    Всё началось именно с этого заявления. В том примере, ссылку на который я давал, кода получилось даже меньше, чем в N-версии.

    ANS>>Если "понимание" это уверенность в том, что патерн-матчинг это заменитель if-ов, то я лучше побуду не понимающим.

    WH>if это ветвление. pattern-matching это тоже ветвление только болие навороченое.

    Странно, я много раз давал ссылки на определения патерн-матчинга
    Автор: Andrei N.Sobchuck
    Дата: 21.02.06
    . Вот определение с сайта Nemerle:

    Matching is a way of destructuring complex data structures, especially variants.

    Про ветвление ничего не сказано.

    WH>Так вот если pattern-matching это не заменитель if'ов в сложных случаях то я не знаю что это.


    Почитай литературу, что ли.

    WH>>>Перепиши те несколько строк что я приводил в ОО стиле.

    ANS>>Хм.
    Автор: Andrei N.Sobchuck
    Дата: 12.09.06

    WH>Мимо. Вносить печать в AST это всеравно что яблоку прицепить метод СкормитьЁжику.

    Аналогия так себе
    Автор: Andrei N.Sobchuck
    Дата: 20.06.06
    .

    WH>В конце концов паттерн посетитель придумали не случайно.


    Что тебе не понятно в Визиторе?.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[40]: Оффтопик: Nemerle
    От: WolfHound  
    Дата: 15.09.06 07:24
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Подгружать функции по мере необходимости.

    Те статическая типизация идет лесом? Замечательный метод
    К тому же что будет если произойдет конфликт имен?

    ANS>Код прийдётся менять. Это для тебя проблема?

    Мне придется изменить только код печати, а тебе придется править типизатор что несравнимо труднее.
    ANS>В качестве упражнения, добавь сам туда поддержку тринарного оператора between-and.
    Не надо мне упражнений. Я не хуже тебя могу провести и объектную и функциональную декомпозицию. А еще я понимаю где нужно использовать одну, а где другую.

    ANS>Еще раз, если ты попробуеш все эти варианты запихнуть в один класс, то получиш усложнение кода, иначе — простой нормальный код.

    Ну так объясни как не запихнуть это все в один класс вернее как не пропихивать все это каждый раз в сотню классов...

    WH>>Нет. В типизаторе есть куча мест где не делается различий между операторами и вызовами функций.

    ANS>И что? Ты не знаеш как этого эфекта добится в ОО программе?
    Знаю. Но избавится от анализа сложных структур всеравно не получится.

    ANS>Всё началось именно с этого заявления. В том примере, ссылку на который я давал, кода получилось даже меньше, чем в N-версии.

    Угу... на побочной микрозадаче... При попытки загнать в такую схему типизатор ты повесишься.

    ANS>Странно, я много раз давал ссылки на определения патерн-матчинга
    Автор: Andrei N.Sobchuck
    Дата: 21.02.06
    . Вот определение с сайта Nemerle:

    ANS>

    ANS>Matching is a way of destructuring complex data structures, especially variants.

    ANS>Про ветвление ничего не сказано.
    Под это определение подходит вот такой код
    Object.Prop1.Prop2.Prop3
    Это что pattern-matching? Оказывается в C# давно есть pattern-matching, а мужики то и не знали...
    А если вдруг появляются несколько образцов тот тутже появляется ветвление.

    WH>>Мимо. Вносить печать в AST это всеравно что яблоку прицепить метод СкормитьЁжику.

    ANS>Аналогия так себе
    Автор: Andrei N.Sobchuck
    Дата: 20.06.06
    .

    Так ты именно что пытаешься корове добавить метод доитьКем.

    WH>>В конце концов паттерн посетитель придумали не случайно.

    ANS>Что тебе не понятно в Визиторе?.
    Мне все понятно. Это ОО костыль для эмуляции жалкого подобия pattern-matching'а.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[41]: Оффтопик: Nemerle
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 15.09.06 07:40
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

    WH>Мне придется изменить только код печати, а тебе придется править типизатор что несравнимо труднее.

    ANS>>В качестве упражнения, добавь сам туда поддержку тринарного оператора between-and.

    Это ж одна строчка. Вот не мудри, а покажи.

    ANS>>Еще раз, если ты попробуеш все эти варианты запихнуть в один класс, то получиш усложнение кода, иначе — простой нормальный код.

    WH>Ну так объясни как не запихнуть это все в один класс вернее как не пропихивать все это каждый раз в сотню классов...

    Ты лучше объясни, зачем взять ОО язык, всё запихнуть в один класс с помощью кучи if-ов, а потом всё вытягивать с таким же гимором назад?

    ANS>>Странно, я много раз давал ссылки на определения патерн-матчинга
    Автор: Andrei N.Sobchuck
    Дата: 21.02.06
    . Вот определение с сайта Nemerle:

    ANS>>

    ANS>>Matching is a way of destructuring complex data structures, especially variants.

    ANS>>Про ветвление ничего не сказано.
    WH>Под это определение подходит вот такой код
    WH>Object.Prop1.Prop2.Prop3
    WH>Это что pattern-matching? Оказывается в C# давно есть pattern-matching, а мужики то и не знали...

    О, так до тебя таки потихоньку доходит, что есть разные пути разбития структуры на составляющие и "привязки" к этим структурам кода, и что патерн-матчинг только один из них.

    WH>Так ты именно что пытаешься корове добавить метод доитьКем.


    О! Расскажи а как правильно и почему.

    WH>>>В конце концов паттерн посетитель придумали не случайно.

    ANS>>Что тебе не понятно в Визиторе?.
    WH>Мне все понятно. Это ОО костыль для эмуляции жалкого подобия pattern-matching'а.

    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[34]: Дополнение к посту Vermicious Knid
    От: WolfHound  
    Дата: 15.09.06 07:40
    Оценка: +1
    Здравствуйте, FR, Вы писали:

    FR>А джит компиляторы это уже успешно делали до того как вообще менеджед языки со статической типизацией появились.

    Угу... при помощи локального вывода типов... А в данном случае емеем массив черт знает каких объектов... JIT нервно курит в гулу...
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[34]: Дополнение к посту Vermicious Knid
    От: WolfHound  
    Дата: 15.09.06 07:40
    Оценка: +2
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>Объект всегда и везде лежит со своим собственным типом, ни к чему не приведённый. И виртуальной машине не требуется ничего дополнительно выяснять — класс объекта записан в самом объекте. При первом же взгляде на объект сразу видно его класс. Сам подумай — если бы тип лежал приведённым к чему-либо, то мы бы потеряли всю, хранящуюся в полях, созданных в классах, дочерних относительно того, к которому тип приведён.


    <Из под стола>
    Ежу понятно что тип прошит в объект. Вот только это не освобождает от необходимости получить этот тип. Далие имея этот тип провести некую диспетчеризацию для того чтобы добратся до кода который может это обработать.
    И никак это этой диспетчиризации не избавится. И если во многих случаях эту диспетчиризацию можно выполнить статически и даже заинлайнить кодто в случае массива черт знает чего никакой статический анализатор не поможет.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[42]: Оффтопик: Nemerle
    От: WolfHound  
    Дата: 15.09.06 07:55
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    WH>>Мне придется изменить только код печати, а тебе придется править типизатор что несравнимо труднее.

    ANS>>>В качестве упражнения, добавь сам туда поддержку тринарного оператора between-and.
    ANS>Это ж одна строчка. Вот не мудри, а покажи.
    А что сам догадатся не можешь?

    ANS>Ты лучше объясни, зачем взять ОО язык, всё запихнуть в один класс с помощью кучи if-ов, а потом всё вытягивать с таким же гимором назад?

    Так это ты предлагаешь запихнуть все в один класс. Я такого никогда не предлагал.

    ANS>О, так до тебя таки потихоньку доходит, что есть разные пути разбития структуры на составляющие и "привязки" к этим структурам кода, и что патерн-матчинг только один из них.

    Есть. Вот только на ассемблере тоже можно писать. Вопрос удобства и надежности.

    ANS>О! Расскажи а как правильно и почему.

    Правильно так как сделали авторы Nemerle. По тому что AST не знает о не свойственных ему вещах таких как печать.

    WH>>Мне все понятно. Это ОО костыль для эмуляции жалкого подобия pattern-matching'а.

    ANS>
    А что можешь обосновать что это не так?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[43]: Оффтопик: Nemerle
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 15.09.06 08:02
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

    WH>>>Мне придется изменить только код печати, а тебе придется править типизатор что несравнимо труднее.

    ANS>>>>В качестве упражнения, добавь сам туда поддержку тринарного оператора between-and.
    ANS>>Это ж одна строчка. Вот не мудри, а покажи.
    WH>А что сам догадатся не можешь?

    Нет. я ж не разбираюсь в патерн-матчинге.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[35]: Дополнение к посту Vermicious Knid
    От: FR  
    Дата: 15.09.06 08:50
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

    WH>Здравствуйте, FR, Вы писали:


    FR>>А джит компиляторы это уже успешно делали до того как вообще менеджед языки со статической типизацией появились.

    WH>Угу... при помощи локального вывода типов... А в данном случае емеем массив черт знает каких объектов... JIT нервно курит в гулу...

    Почему локального?
    Re[33]: Дополнение к посту Vermicious Knid
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 15.09.06 08:58
    Оценка: -1
    Кстати:

    VD>Жык это еще хуже. Чтобы этот метод выбрать нужно взять каждый объект узнать его теальный тип (в массиве он ведь не приведенным к базовому типу вроде object лижит) и только потом вызвать метод. Причем все дожно быть по ссылке. Никакие джит-компиляторы тут ничего сделать не согут. Это будет опасный и тормозной код.

    Несомненно, это именно та причина, по которой JIT-компилятор впервые появился именно в Smalltalk.
    --
    Бесчастнов Евгений
    В стране невыученных уроков.
    От: Klapaucius  
    Дата: 15.09.06 12:03
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

    K>>Понятно. Но я уже говорил, что обсуждать проблемы дзен-дубизмов я не в настроении.

    K>>Речь шла о пересылке сообщений, вопросах реализации этой переылки и прочем.
    ГВ>Нет, это уже забавно. Не обижайтесь, но развивать нашу дискуссию до спора о том, в чём был главный дар Smalltalk (было там и такое) я не буду.

    Речь не о том, что есть главный дар смолтока, а о том, возможен ли ооп без сообщений.

    K>>Не вижу никаких оснований ссылаться на поределение "парадигмы ООП".

    ГВ>Вы же читали дискуссию. Там упомянуто ООП и википедия. Определение ООП ссылается на определение парадигмы.
    ГВ>- Что такое ООП?
    ГВ>- Это — парадигма.

    И что, дальше читать уже нельзя?

    ГВ>- Что такое парадигма?

    ГВ>- парадигма — это взгляд на программу...

    Не нравится это определение парадигмы — найдите другое.
    Что, определения терминов в статьях википедии можно смотреть только в википедии? Это обязательно?
    Вы сами вдумайтесь в то, что вы говорите. Есть статья. Вы находите толкование термина, употребляемого в статье и это толкование вам не нравится — и что теперь? Статья плохая? Мрак. Жуть.

    Вы вообще отклоняетесь от темы. Речь идет не о противопоставлении двух конкретных определений. А о противопоставлении распространенной и нераспространенной терминологии. Возражение против распространенного определения не содержало в себе ни указания на некорректность определения ни указания на его объектность-субъектность. Оно содержало только то, что распространенное определение плохое потому, что оно распространенное.Все. Больше ничего там не было. И Вы еще скажете что не стоит придумывать за автора то, что он хотел сказать, но не сказал?

    ГВ>Если это для Вас не основание для упоминания одиозной "парадигмы", то... То я даже не знаю, что и сказать.


    Оно одиозно только для Вас лично. Я по поводу "парадигм" не комплексую.

    ГВ>Взгляд — это действие субъекта ("программист глядит на программу"). Это не может быть частью определения, претендующего на большее, чем банальный трёп.


    С какой стати? Для вас субъектность какое-то непонятное зло. Чуть что сразу — анафема! Вы бы хоть разъяснили чем это плохо. Только покороче, если можно.
    А вместо этого все доказываете субъектное... программист глядит... в чем проблема-то?

    K>>Особенно в данном случае забавным виглядит альтернатива — мнение, аргументированное незнанием (тут, конечно, все в порядке или просто придираться не хочется?).

    ГВ>В противовес субъектному определению любое объектное подходит.

    1) Это еще нужно доказать 2) Если докажете — приводите объектное. То что Вы привели — выражение личного восприятия, аргументированное незнанием. Объяснять в чем проблемы такого определения или не надо?

    ГВ>>>Значит, общество не до конца понимает суть явления, раз оперирует терминологией на основе субъектных определений.

    K>>И что? Почему это может помешать оперированию именно такой терминологией?
    ГВ>Да нет, ничего не может помешать. Каждый волен сходить с ума по-своему.

    Вы не отклоняйтесь в область психиатрии. Вы обясните где еще может быть парадигма, если не в голове программиста, который смотрит программу. Если вы так волнуетесь по этому поводу, дайте определение термина "определение". Имеют ли определения физический смысл? Или это может только взгляд, существующий в голове?

    K>>Нет. Я выдвинул тезис: "Необщепринятая терминология не решает поставленные перед ней задачи"

    K>>Я обосновал этот тезис.
    K>>Возражения было аж целых два.
    <...>
    K>>2) Претензия к определению термина "парадигма" в Википедии. Т.е. даже не к определению ООП, а к определению, на которое из статьи ООП есть ссылка.
    K>>Эти два возражения по существу?
    ГВ>Второе — по существу, но мой контртезис таков: субъектными определениями нельзя пользоваться.

    Вы не обосновали это утверждение.

    ГВ>Определение ООП включает в себя "взгляд" в составе описания (через "парадигму"). Ergo, это определение некорректно по факту, его даже рассматривать нельзя в качестве определения.


    Некорректным определением пользоваться можно. Если его знают.
    Определением, которое никто не знает — пользоваться в принципе не возможно.

    K>>Ответте на простой вопрос: как терминология поможет людям говорить об одном и том же, если с этой терминологией почти никто не знаком. Не надо сетовать на несовершенство мира. просто ответте.

    ГВ>Прочитают нужные книжки и всё поймут, не надо недооценивать людей.

    Вы сами то понимаете о чем говорите? Т.е. если сделать определение распространенным, то все будет работать нормально.

    ГВ>А так они говорят, на самом деле, каждый о своём, состязаясь в силе эмоционального воздействия и мощности глотки.


    Вот именно, пока не распространено — не работает.

    ГВ>>>>>"Яблоком" же не стали называть, например, абрикосы?

    K>>>>Вы считаете, что невозможен язык, в котором абрикосу будет соответствовать языковой знак "яблоко"?
    ГВ>>>Возможен.
    K>>Тогда в чем критерий "правильности". Все что от Вас требуется — дать критерий "правильности" терминологии. Я свой критерий дал.

    ГВ>Стоп. Причём тут критерий "правильности"?


    При то, что вы сказали буквально следующее:

    Следовать "общепринятым" терминам в противовес правильных — как раз показатель бездумности.

    Бездумным быть не хочется, вот и интересно, что вы имели в виду.

    ГВ>Я не пытался сказать, что нечто однозначно и навсегда правильно, хотя склонен считать, что...


    ... что истина всегда конкретна? Вы одновременно верите и в то, что дед Мороз есть и в то, что его нет?

    ГВ>Ещё раз повторяю набор посылок и моё возражение в схематичной форме:

    ГВ>1. Понятию "ООП" даётся субъектное определение А.

    в определении ООП использован термин, для которого существует субъектное определение. Вот так будет вернее.

    ГВ>2. Это определение принимается как "общепринятое".


    Оно фактически общепринятое. Это свойсто определений википедии by design

    ГВ>3. В дискуссии определение А явно противопоставляется объектному определению Б на основании п.2


    Нет такой дискуссии. Противопоставлялось общепринятое и эзотерическое и утверждалось то, что предпочесть общепринятое эзотерическому можно толкьо по недомыслию. Причем ничем кроме численности групп употребляющих и неупотребляющих этот термин это утверждение не аргументировалось.

    ГВ>Моё возражение. В силу заведомой некорректности определение А нельзя принимать как истинное.


    Утверждение о заведомой некорректности не доказано.

    ГВ>В данном случае в п.3 сделано две ошибки: а) применена аргументация коллективом


    Аргументация коллективом была применена как раз для защиты эзотерического определения.

    ГВ>б) постулируется истинность заведомо неверифицируемого определения.


    Истинность не постулируется. постулируется пригодность для именования. Для именования пригодно все что угодно. Лишь бы только участники обмена информацией были в курсе такого именования. Помните пост про "горшок произвольного доступа"?

    K>>>>Вы вкурсе, что отношение между объектом, определяемым языковым знаком и языковым знаком асимметрично?

    ГВ>>>Естественно. Это как раз стимул для развития и уточнения терминологии. Но причём здесь может оказаться "взгляд"?
    K>>Каким образом это стимул? Скорее уж это показатель бессмысленности уточнения. И бессмысленности претензй к слову "взгляд".

    ГВ>Ну нам же нужно обеспечить недвусмысленность терминологии, правильно?


    Обеспечить недвусмысленность терминологии каким-либо другим способом, кроме учета контекста нельзя. Это показано на примерах. Иллюзорная и недостижимая "корректность" в данном случае не может быть гарантией непротиворечивости.

    K>>>>Вы считаете что термин "абрикос" для плода Prunus armeniaca в группе людей называющих этот плод "яблоком" адекватен?

    ГВ>>>Зависит от контекста.

    K>>Контекст описан. Могу разжевать еще подробнее. Дано:

    K>>5 человек, называющих плод prunus armeniaca яблоком.
    K>>1 человек знает, что эти пять называют плод prunus armeniaca яблоком.
    K>>1 человек называет плод prunus armeniaca абрикосом. Он знает, что так называют его еще миллион людей, но их здесь сейчас нет.
    K>>5 человек не в курсе, что плод prunus armeniaca можно назвать абрикосом.

    ГВ>Всё ясно, но пример не в кассу. Здесь нужно противопоставлять именно "взгляд" как свойство субъекта и некое название вещи как пример объектного определения.


    Название вещи есть взгляд и является свойством субъекта. Названия только в такой форме и существуют.

    ГВ>Простите, Вы действительно понимаете суть моих возражений или нет?


    А Вы моих?

    K>>Решит ли данная терминология основную проблему которую она призвана решить — помочь этим шести человекам говорить об одном и том же одними словами?

    K>>А вообще в том и дело, что это зависит от контекста. К какой-то внеконтекстной "правильности" не существует.
    ГВ>Конечно. Но вполне себе существуют отличия корректного и некорректного описания предмета.

    Что понимается под корректностью описания? Полнота? — она недостижима. Непротиворечивость? — она неверифицируема.
    Что еще?

    ГВ>>>>>Кроме того, яблоком не называют, например, "взгляд из-под подушки в невечернем свете закатной Луны".

    K>>>>Почему? Потому, что это общепринято? Что еще мешает называть это именно так?
    ГВ>>>Откуда я знаю.
    K>>Да этого никто не знает. На философии языка свернулись лучшие философские мозги. Чем больше Вы будете об этом думать, тем лучше понимать насколько слово "правильность" в данном случае смехотворно.
    ГВ>>>Видимо, то, что большинство таки не одни лишь законы физики усвоило. Это хорошо и хорошо весьма.
    K>>А с философией, похоже, не все так радужно.

    ГВ>Трудно сказать. Можно спорить о точности и непротиворечивости выделения объекта, но уж заметить разницу между субъектом и объектом, ИМХО, вовсе не сложно.


    И что это даст?

    K>>>>>>На самом деле, как это не печально, быть может, никакой истины не существует. Есть вероятность для еденицы и статистика для множества едениц. И все! Самое лучшее, что мы можем себе позволить, это средняя темпмература по больнице.

    ГВ>>>>>Угу. И это и есть конкретный и точный ответ на вопрос: "Какова средняя температура по больнице?"
    K>>>>На этот вопрос не существует конкретного и точного ответа, как раз потому, что этот вопрос не точен и не конкретен. Объяснять почему?
    ГВ>>>Угу, потому что не указаны временные рамки и методика измерения температуры как минимум.
    K>>Про "как минимум" — это Вы чертовски правильно подметили. Вы можете сколько угодно падать в бесконечную бездну конкретизации и так до конкретности никогда и не долететь.

    ГВ>Верно, верно. Но я не буду называть "среднюю температуру", скажем, "вектором ощущений медперсонала".


    Температура Васи Пупкина это вполне нормальный пучек ощущений для медперсонала. Вы знаете какой-то другой способ восприятия окружающей действительности кроме как через ощущения?

    ГВ>Разницу понимаете?


    А Вы? В чем она заключается?

    K>>>>Или вы имеете в виду, что точный ответ на вопрос "какова средняя температура по больнице" — это слова "это средняя температура по больнице". Формально — это верно, но никакой информации этот ответ не содержит.

    ГВ>>>Это уже словоблудие. Понятно, что предполагается упоминание какой-то конкретной цифры.
    K>>Какое-то конкртеное и точное число. С этого места поподробнее, пожалуйста. С какой точности начинается конкретность, а с какой кнкретности — точность?
    K>>Начиная с какого знака после запятой это будет точный ответ?

    ГВ>Это зависит от требований медицины. Безусловно, требования эти могут в перспективе поменяться и измерения будут проводиться, например, с точностью до 0,0001 градуса в двадцати точках на протяжении суток. Тогда термин "средняя температура" обретёт несколько иной смысл.


    Я что-то не пойму. Вы утвеждаете, что конкретность — это вопрос договоренности?
    Т.е. если истина всегда конкретна, то это означает, что истина всегда такая, как договоримся?

    ГВ>Более того, термометры могут даже поверять в метрологии, так как шкала температур, тоже, в общем, результат принятия определённого соглашения об измерениях.


    Вот именно.

    ГВ>Правда, я не уверен, что в этом соглашении принимало участие некое "общественное большинство", за исключением большинства из каких-то научных организаций.


    Я уже писал, что способ установления общепринятости значения для дискуссии не имеет. Сколько еще про это написать?
    Естественно, что этот вопрос решался не съездом КПСС, а в достаточно узких научных кругах. Тем не менее это не мешает быть общепринятым.

    ГВ>И заметьте, эталон тепературы сугубо объектен.


    Не замечу. То, что мы можем дать объектное определение тройной точке воды, и то что кто-то договорился считать тройную точку воды "эталоном температуры" вовсе не означает, что мы можем дать объектное определение эталону температуры. Понятно?
    Тройная точка существует независимо от культурного контекста, от нас, от наших представлений о ней. "Эталон температуры" вне наших представлений не существует. отношение между тройной точкой и "эталоном температуры" — асимметрично.

    Я же в конце прошлого поста разжевал, как объяснял бы среднешкольнику, что слово "абрикос" это не абрикос. Но все без толку.

    ГВ>>>>>Но это не то же самое, что и: "Какова температура Васи Пупкина?"

    K>>>>Средняя температура по Васе Пупкину?
    ГВ>>>Смешно, спасибо.
    K>>Не за что. Вот когда этого не понимают — уже не смешно.
    K>>Думаете, бывает температура, которая не "средняя по"?
    ГВ>В сущности — согласен.

    Почему же тогда по поводу конкретной истины возражаете?

    K>>>>Не осудили. Вы просто пересказали высказывание автора своими словами извратив при этом смысл так, чтобы у любого читателя не потрудившегося ознакомится с оригинальной фразой и ее контекстом была возможность осудить автора самостоятельно, причем за то, в чем он вовсе не виноват.

    ГВ>>>Мне совершенно не важно, что автор хотел сказать. Важно, в чём это выразилось.
    K>>Это выразилось во многих впечатлениях от этого высказывания, все они индивидуальны и их невозможно рассматривать отдельно от самого впечатляющегося. Другими словами, Ваши фантазии по поводу автора для Вас важнее, чем фантазии автора по поводу его слов.
    ГВ>Вы действительно правильно прочли то, что я написал?

    Ладно. Поясните, что Вы написали. Поясните это: "в чем это выразилось"

    K>>Для меня, кстати, тоже. Это вообще распространенный подход.

    ГВ>А... эвона оно как... А я-то думаю, с чего это всё ко мне в мозг залезть пытаетесь.

    Ответная любезность.

    ГВ>>>>>Скорее уж добрая воля отсутствует у тех, кто идёт за большинством ради большинства.

    K>>>>А у тех, кто за меньшинством ради меньшинства?
    ГВ>>>А никто не предлагает идти за меньшинством ради меньшинства. С чего Вы это взяли?
    K>>Я знаю до черта примеров, когда гордятся противоположным общим местом, как оригинальным собственным мнением.
    ГВ>Я тоже. И что? В случае упомянутой дискуссии это было не так.

    А по-моему, так и было.

    K>>Никто, кстати, и не предлагал идти за большинством ради большинства, но вы этого не заметили.

    ГВ>Странно. К чему тогда была аргументация большинством? По сути она приводит к необходимости принять заведомо некорректное определение предмета дискуссии.

    о5 — 25
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re[31]: Дополнение к посту Vermicious Knid
    От: pavel74  
    Дата: 15.09.06 12:19
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Динамика разная конечно бывает. Но если можно вот так свободно сложить разные числа из массива, то неявные приведения есть. Хотя конечно есть один выход... хранить все числа в виде единобразных объектов поддерживающих числа неограниченного размера. Но вот эффективность у такого подхода ой как не высока. Автор компилируемого язык на такое пойти не может.


    Понятно что "скорострельность", особенно на числодробилках меньше. Да и "высока" "невысока" понятия относительные — если ее хватает для решаемых задач то все ок, не так ли , особенно в свете роста быстродействия компутеров .
    Щас последует возражение типа — ну чем быстрее потенциальные возможности тем круче. Но опять же повторюсь — если ее хватает для решаемых задач то все ок.
    Re[31]: Дополнение к посту Vermicious Knid
    От: pavel74  
    Дата: 15.09.06 12:35
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    P>>Для реальной работы роль играет не токо на скоко в языке есть те или иные возможности, но и на скоко качетсвенны и функциональны IDE для них, а в этом плане с мегабаблом вкладываемым MC в VS и .Net тягаться уже сложнее.


    VD>Вот тут полностью согласен. Но казалось бы аргумент явно не в пользу динамики.

    Это да, поэтому динамические языки и на порядки и менее популярны в массах. А не за счет мнимой фатальной "ущербности". Есть для них своя ниша задач. И для них я бы осознанно выбрал динамический язык, но из-за непопулярности , не такой навороченности IDE, отсутсвия агрессивного маркетинга и промывания мозгов разработчикам и прочих подобных причин — это делать достаточно рисковано.
    Re[35]: Дополнение к посту Vermicious Knid
    От: pavel74  
    Дата: 15.09.06 12:36
    Оценка: -2
    Здравствуйте, WolfHound, Вы писали:

    WH>Здравствуйте, Eugene Beschastnov, Вы писали:


    EB>>Объект всегда и везде лежит со своим собственным типом, ни к чему не приведённый. И виртуальной машине не требуется ничего дополнительно выяснять — класс объекта записан в самом объекте. При первом же взгляде на объект сразу видно его класс. Сам подумай — если бы тип лежал приведённым к чему-либо, то мы бы потеряли всю, хранящуюся в полях, созданных в классах, дочерних относительно того, к которому тип приведён.

    WH>
    WH><Из под стола>
    WH>Ежу понятно что тип прошит в объект. Вот только это не освобождает от необходимости получить этот тип. Далие имея этот тип провести некую диспетчеризацию для того чтобы добратся до кода который может это обработать.
    WH>И никак это этой диспетчиризации не избавится. И если во многих случаях эту диспетчиризацию можно выполнить статически и даже заинлайнить кодто в случае массива черт знает чего никакой статический анализатор не поможет.

    И что, застрелиться что-ли. Главное что код читается проще и универсальнее, а быстродействие пусть хоть на порядок хуже, главное чтоб хватало для задачи.

    А к примеру в том примере с обработкой чисел в массиве могут оказаться и числа типа Fraction (дроби) и логика обработки в "динамическом" языке все равно не измениться. А что делать в статических языках — "такого класса нет — поэтому задачу решать не будем" . А если делать такие типы чисел через классы реализую в них интерфейсы, то принцип-то будет такой же как в "динамике". Динамически получить интерфейс объекта и дернуть метод.
    Re[34]: Дополнение к посту Vermicious Knid
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 13:40
    Оценка: +1
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>Блин, ну Влад, ну это уже просто неприлично. Ты бы хоть немного изучил ту тему, по которой с таким апломбом высказываешься.


    Я то как раз в теме разбираюсь не плохо просто потому, что делал все это своими руками. А ты бы постеснялся бы так пальцы гунь и выпедриваться.

    VD>> в массиве он ведь не приведенным к базовому типу вроде object лижит

    EB>Объект всегда и везде лежит со своим собственным типом, ни к чему не приведённый. И виртуальной машине не требуется ничего дополнительно выяснять — класс объекта записан в самом объекте. При первом же взгляде на объект сразу видно его класс. Сам подумай — если бы тип лежал приведённым к чему-либо, то мы бы потеряли всю, хранящуюся в полях, созданных в классах, дочерних относительно того, к которому тип приведён.

    Агащазблин. Вспоминаем про ващи же рассказы о JIT-кмплияции и т.п. Чтобы получить мало-мальский быстрый код комплилятор обязан знать о типах объектов. И в реально оптимизирующих рантаймах все значительно сложее. "класс объекта записан в самом объекте" — это и есть "лежит приведенным к базовому типу вроде object" если говорить в терминах Ява/дотнет-рантайма.

    Так вот если в массиве будет лежать нечто одного типа, и компилятор об этом будет знать, то ему не составит труда создать более-менее производительный код. А пихая в массив объекты разных типов вы принуждаете забыть про компиляцию и вставлять в код жудчайший интерпретатор который или преобразует все типы к одному, или в рантайме вычисляет какой метод должен быть вызван. И то и другое катастрофически медленно. Но если ваши задачи столь просты, что современные процессоры превышают их в 100 раз, то конечно у вас нет никаких проблем.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[34]: Дополнение к посту Vermicious Knid
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 13:40
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>Конечно может быть и так как ты описываешь, если вызывающий код сам явно проверяет проверяет типизацию. Но для динамики гораздо полезнее думать в терминах сообщений,


    Стоп, стоп, стоп. Думать ты можешь как хочешь. Вообще в программировании зачастую думать о сущьностях лучше не в терминах реализации, а в терминах более абстрактных. Например, те же замыкания можно воспринимать как кросивю магию, а можно как генерацию классов или редукцию графов.

    Но мы же говорим о производительсности в данном случае? А раз так, то мы дожны говорить о реализации. И тут все печально. Все замечательные разговоры об оптимизациях умных рантаймов таят как только вот такие вот умники распираемые от крутости своего динамического языка пихают в список элементы разного типа и начинают "пользоваться динамикой". Это моментально приводит к кончине как производительности так и надежности.

    FR> объект получает запрос если может обработать обрабатывает, если не может вылетает с исключением, то есть ровно наооборот тому что ты описал.


    Да, да, да... Думать так можно и даже нужно. Но вот в реальных компиляторах того же Смолтока никаких сообщений уже давно нет. Там JIT-ы старающиеся залепить ассемблерный call и т.п.

    FR>А джит компиляторы это уже успешно делали до того как вообще менеджед языки со статической типизацией появились.


    Не, не, не. Никаких JIT-компиляторов если вы хотите динамики. Джиты живут до той поры пока ваша динамика является по сути статикой. Джиту нужна статическая информация о типах. Ситуацию спасает то, что джит максимально приближен к времени выполнения и может получать информацию о типах на поздних стадиях. Но она ему нужна как воздух. Без нее JIT будет вставлять код интерпретатора в прямо в тела методов.

    Надеюсь понято о чем я?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[36]: Дополнение к посту Vermicious Knid
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 13:40
    Оценка:
    Здравствуйте, FR, Вы писали:

    WH>>Угу... при помощи локального вывода типов... А в данном случае емеем массив черт знает каких объектов... JIT нервно курит в гулу...


    FR>Почему локального?


    Не придирайся к словам. Суть ты должен был уловить.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[34]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 13:40
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>>>Ну хаскель притендует

    VD>>На место в кунскамере?
    FR>Зря, вещь очень интересная, жаль у меня времени нет плотнее его изучить.

    Кто же спорит?! Очень интересная. Но и очень не практичная.

    FR>Да я согласен в общем. Просто по этому определению и руби и питон тоже функциональные языки.


    Я бы так сказал, они как и C# хреново функциональные. То есть писать на них в функциональном стиле моно, но зачастую это менее удобно чем в императивном.

    Другими словами функциональный стиль в них не предпочтительный и даже не равный. Но вполне применимый. Уж точно лучше применимый чем в С++, скажем.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[32]: Дополнение к посту Vermicious Knid
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 13:40
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>Того что выделено не достаточно. Я тоже когда смотрел придерживался практически такого же мнения о динамике как ты сейчас.


    Цитирую, как говорится, классиков .

    Я вот не мало в свое мремя пописал на разных динамических языках.


    FR> eao197 тоже помнится говорил здесь об этом же. А насчет пописал на разных динамических языках можешь сказать на каких именно и примерный объем кода.


    Ребытя. Будьте чесны сами с собой. Вы выбрали Руби и Питон, не потому, что они динамические. А потому что они значитально удобнее чем кайо-нибудь С++ используемый вами до этого как основной язык. Но уже с C# перейти (даже) на Руби очень тяжело. А с какого-нибудь эээ, ну скажем Скалы, чтобы не раздражать население , вообще невозможно, так как серьезно теряещь в функциональности.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[35]: Дополнение к посту Vermicious Knid
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 15.09.06 13:51
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Не, не, не. Никаких JIT-компиляторов если вы хотите динамики. Джиты живут до той поры пока ваша динамика является по сути статикой. Джиту нужна статическая информация о типах. Ситуацию спасает то, что джит максимально приближен к времени выполнения и может получать информацию о типах на поздних стадиях. Но она ему нужна как воздух. Без нее JIT будет вставлять код интерпретатора в прямо в тела методов.


    Какого такого интерпритатора???

    VD>Надеюсь понято о чем я?


    А-а-а. Только не мой мозг!
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Контрольную устроить, что-ли?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 15.09.06 14:10
    Оценка: -2
    Здравствуйте, Klapaucius, Вы писали:

    K>>>Не вижу никаких оснований ссылаться на поределение "парадигмы ООП".

    ГВ>>Вы же читали дискуссию. Там упомянуто ООП и википедия. Определение ООП ссылается на определение парадигмы.
    ГВ>>- Что такое ООП?
    ГВ>>- Это — парадигма.
    K>И что, дальше читать уже нельзя?

    Можно. Как беллетристику.

    ГВ>>- Что такое парадигма?

    ГВ>>- парадигма — это взгляд на программу...
    K>Не нравится это определение парадигмы — найдите другое.
    K>Что, определения терминов в статьях википедии можно смотреть только в википедии? Это обязательно?

    Это не ко мне вопрос. Я пользуюсь языками программирования и на саму по себе парадигму мне с высокой колокольни...

    K>Вы сами вдумайтесь в то, что вы говорите. Есть статья. Вы находите толкование термина, употребляемого в статье и это толкование вам не нравится — и что теперь? Статья плохая? Мрак. Жуть.


    Если эти две статьи в одном источнике — то да, мрак и жуть. Поскольку недоверие, вызванное толкованием закономерно вызывает недоверие и к самой исходной статье.

    K>Вы вообще отклоняетесь от темы. Речь идет не о противопоставлении двух конкретных определений. А о противопоставлении распространенной и нераспространенной терминологии. Возражение против распространенного определения не содержало в себе ни указания на некорректность определения ни указания на его объектность-субъектность. Оно содержало только то, что распространенное определение плохое потому, что оно распространенное.Все. Больше ничего там не было. И Вы еще скажете что не стоит придумывать за автора то, что он хотел сказать, но не сказал?


    Куда я отклоняюсь? Речь вообще-то о недопустимости принятия "общепринятого" на основании одной лишь распространённости.

    ГВ>>Если это для Вас не основание для упоминания одиозной "парадигмы", то... То я даже не знаю, что и сказать.

    K>Оно одиозно только для Вас лично. Я по поводу "парадигм" не комплексую.

    Я заметил.

    ГВ>>Взгляд — это действие субъекта ("программист глядит на программу"). Это не может быть частью определения, претендующего на большее, чем банальный трёп.

    K>С какой стати? Для вас субъектность какое-то непонятное зло. Чуть что сразу — анафема! Вы бы хоть разъяснили чем это плохо. Только покороче, если можно.
    K>А вместо этого все доказываете субъектное... программист глядит... в чем проблема-то?

    Контрольная работа: передайте мне свой взгляд на это сообщение. Верифицируйте правильность передачи взгляда. Ну или просто опишите сам метод передачи взгляда.

    K>>>Особенно в данном случае забавным виглядит альтернатива — мнение, аргументированное незнанием (тут, конечно, все в порядке или просто придираться не хочется?).

    ГВ>>В противовес субъектному определению любое объектное подходит.

    K>1) Это еще нужно доказать


    Двойка авансом.

    K>2) Если докажете — приводите объектное. То что Вы привели — выражение личного восприятия, аргументированное незнанием. Объяснять в чем проблемы такого определения или не надо?


    Разве речь о разных определениях ООП самих по себе?

    ГВ>>>>Значит, общество не до конца понимает суть явления, раз оперирует терминологией на основе субъектных определений.

    K>>>И что? Почему это может помешать оперированию именно такой терминологией?
    ГВ>>Да нет, ничего не может помешать. Каждый волен сходить с ума по-своему.

    K>Вы не отклоняйтесь в область психиатрии. Вы обясните где еще может быть парадигма, если не в голове программиста, который смотрит программу.


    Понимаете ли, нельзя путать "парадигму" как агрегатное (объектное!) понятие и тот эффект, который возникает в голове конкретного наблюдателя при следовании ей.

    K>Если вы так волнуетесь по этому поводу, дайте определение термина "определение". Имеют ли определения физический смысл? Или это может только взгляд, существующий в голове?


    На бумаге, во всяком случае, я видел множество определений самых разнообразных вещей. Ergo, это не только тараканы в голове.

    K>>>2) Претензия к определению термина "парадигма" в Википедии. Т.е. даже не к определению ООП, а к определению, на которое из статьи ООП есть ссылка.

    K>>>Эти два возражения по существу?
    ГВ>>Второе — по существу, но мой контртезис таков: субъектными определениями нельзя пользоваться.
    K>Вы не обосновали это утверждение.

    Кол — тем же авансом.

    ГВ>>Определение ООП включает в себя "взгляд" в составе описания (через "парадигму"). Ergo, это определение некорректно по факту, его даже рассматривать нельзя в качестве определения.

    K>Некорректным определением пользоваться можно. Если его знают.

    А что оно будет определять, будучи заведомо некорректным? Всё, что захочет очередной оратор? Хорошенькое же определение!

    K>Определением, которое никто не знает — пользоваться в принципе не возможно.


    Значит, надо почитать книги, где это определение имеется.

    K>>>Ответте на простой вопрос: как терминология поможет людям говорить об одном и том же, если с этой терминологией почти никто не знаком. Не надо сетовать на несовершенство мира. просто ответте.

    ГВ>>Прочитают нужные книжки и всё поймут, не надо недооценивать людей.
    K>Вы сами то понимаете о чем говорите? Т.е. если сделать определение распространенным, то все будет работать нормально.

    Не всякое определение стоит делать распространённым. К википедическому это относится в полной мере. Ну, попытайтесь определить токарное дело через "усилия токаря". Много он "натокарит"?

    ГВ>>А так они говорят, на самом деле, каждый о своём, состязаясь в силе эмоционального воздействия и мощности глотки.

    K>Вот именно, пока не распространено — не работает.

    Верно. А если распространено некорректное определение, то только создаётся видимость того, что она "работает". Вон сколько грызни на ровном месте.

    ГВ>>>>>>"Яблоком" же не стали называть, например, абрикосы?

    K>>>>>Вы считаете, что невозможен язык, в котором абрикосу будет соответствовать языковой знак "яблоко"?
    ГВ>>>>Возможен.
    K>>>Тогда в чем критерий "правильности". Все что от Вас требуется — дать критерий "правильности" терминологии. Я свой критерий дал.
    ГВ>>Стоп. Причём тут критерий "правильности"?

    K>При то, что вы сказали буквально следующее:

    K>

    K>Следовать "общепринятым" терминам в противовес правильных — как раз показатель бездумности.

    K>Бездумным быть не хочется, вот и интересно, что вы имели в виду.

    Ровно то, что написал. Но уточню. Избирать общепринятую (некорректную) терминологию в противовес корректной (хотя возможно, что не лишённой недостатков) — признак бездумности действия. Я понятно выражаюсь?

    ГВ>>Я не пытался сказать, что нечто однозначно и навсегда правильно, хотя склонен считать, что...

    K>... что истина всегда конкретна? Вы одновременно верите и в то, что дед Мороз есть и в то, что его нет?

    Причём тут дед Мороз и моя вера (неверие) в него? Я где-то отрицал возможность или необходимость последовательного уточнения терминологии?

    ГВ>>Ещё раз повторяю набор посылок и моё возражение в схематичной форме:

    ГВ>>1. Понятию "ООП" даётся субъектное определение А.
    K>в определении ООП использован термин, для которого существует субъектное определение. Вот так будет вернее.

    Возможно, но именно через субъектное определение определяется само ООП.

    ГВ>>2. Это определение принимается как "общепринятое".

    K>Оно фактически общепринятое. Это свойсто определений википедии by design

    Тем хуже для википедии.

    ГВ>>3. В дискуссии определение А явно противопоставляется объектному определению Б на основании п.2

    K>Нет такой дискуссии. Противопоставлялось общепринятое и эзотерическое и утверждалось то, что предпочесть общепринятое эзотерическому можно толкьо по недомыслию. Причем ничем кроме численности групп употребляющих и неупотребляющих этот термин это утверждение не аргументировалось.

    Стоп-стоп-стоп. Давайте не будем отклоняться от темы. Повторяю в сотый раз: я не собираюсь спорить на тему того, какое именно из определений ООП — правильное и предельно точное. Я возражаю против следования за большинством, потому что оно — большинство и презрения меньшинства, потому что оно — меньшинство. В данном случае следование за большинством приводит к принятию заведомо бестолково сформулированного определения. Понятно? Я не пытаюсь сейчас докопаться до того, что есть "настоящее ООП", "чистое ООП" и так далее. Потому я и выделил именно эти аспекты (объектное-субъектное и "большинство") доводов.

    ГВ>>Моё возражение. В силу заведомой некорректности определение А нельзя принимать как истинное.

    K>Утверждение о заведомой некорректности не доказано.

    Простите, а как можно определить объект через характеристики субъекта (тем паче, что мы ведём речь о технической деятельности)? Вот уж где эзотерика-то начинается! Йоги и дзенщики нерво медитируют в сторонке.

    ГВ>>В данном случае в п.3 сделано две ошибки: а) применена аргументация коллективом

    K>Аргументация коллективом была применена как раз для защиты эзотерического определения.

    Ой ли? А если перечитать?

    Первый шар:
    Автор: Андрей Коростелев
    Дата: 14.06.06

    Оно не мое, а давно уже дано Кеем:
    1. ...


    Второй:
    Автор: VladD2
    Дата: 17.06.06

    http://en.wikipedia.org/wiki/Object-oriented_programming
    И не надо путать высказывания каких-то отдельных личностей... с общепринятыми и четко определенными понятиями.

    (Чётким определением и не пахнет — Г.В.)

    Третий:
    Автор: Андрей Коростелев
    Дата: 17.06.06

    То есть ты предпочитаешь адаптированное для масс определение неудобному для тебя оригинальному определению, даному ее создателем.


    Далее понеслась телега по просекам.

    Так где здесь первый раз прозвучала апелляция к общепринятости?

    ГВ>>б) постулируется истинность заведомо неверифицируемого определения.


    K>Истинность не постулируется. постулируется пригодность для именования. Для именования пригодно все что угодно. Лишь бы только участники обмена информацией были в курсе такого именования. Помните пост про "горшок произвольного доступа"?


    Да не пригодно оно для использования! Не-при-год-но. Это — мусор, болтовня тинейджеров (возможно — великовозрастных).

    K>>>>>Вы вкурсе, что отношение между объектом, определяемым языковым знаком и языковым знаком асимметрично?

    ГВ>>>>Естественно. Это как раз стимул для развития и уточнения терминологии. Но причём здесь может оказаться "взгляд"?
    K>>>Каким образом это стимул? Скорее уж это показатель бессмысленности уточнения. И бессмысленности претензй к слову "взгляд".

    ГВ>>Ну нам же нужно обеспечить недвусмысленность терминологии, правильно?


    K>Обеспечить недвусмысленность терминологии каким-либо другим способом, кроме учета контекста нельзя. Это показано на примерах. Иллюзорная и недостижимая "корректность" в данном случае не может быть гарантией непротиворечивости.


    Правильно. А заведомая некорректность является как раз гарантией противоречивости.

    K>>>>>Вы считаете что термин "абрикос" для плода Prunus armeniaca в группе людей называющих этот плод "яблоком" адекватен?

    ГВ>>>>Зависит от контекста.

    K>>>Контекст описан. Могу разжевать еще подробнее. Дано:

    K>>>5 человек, называющих плод prunus armeniaca яблоком.
    K>>>1 человек знает, что эти пять называют плод prunus armeniaca яблоком.
    K>>>1 человек называет плод prunus armeniaca абрикосом. Он знает, что так называют его еще миллион людей, но их здесь сейчас нет.
    K>>>5 человек не в курсе, что плод prunus armeniaca можно назвать абрикосом.

    ГВ>>Всё ясно, но пример не в кассу. Здесь нужно противопоставлять именно "взгляд" как свойство субъекта и некое название вещи как пример объектного определения.


    K>Название вещи есть взгляд и является свойством субъекта. Названия только в такой форме и существуют.


    Не-не-не. Не "есть взгляд", а "выражают взгляды". Разница — в отчуждении от субъекта. Сами по себе взгляды остаются при субъектах и никого, по большому счёту не интересуют, взглядов у каждого может быть миллион.

    ГВ>>Простите, Вы действительно понимаете суть моих возражений или нет?

    K>А Вы моих?

    Вполне.

    K>>>Решит ли данная терминология основную проблему которую она призвана решить — помочь этим шести человекам говорить об одном и том же одними словами?

    K>>>А вообще в том и дело, что это зависит от контекста. К какой-то внеконтекстной "правильности" не существует.
    ГВ>>Конечно. Но вполне себе существуют отличия корректного и некорректного описания предмета.

    K>Что понимается под корректностью описания? Полнота? — она недостижима. Непротиворечивость? — она неверифицируема.

    K>Что еще?

    Как минимум, отсутствие заведомых некорректностей. Далее зависит от контекста. В данном случае было одно заведомо некорректное и одно корректное и возможно, точное определение.

    ГВ>>>>Видимо, то, что большинство таки не одни лишь законы физики усвоило. Это хорошо и хорошо весьма.

    K>>>А с философией, похоже, не все так радужно.
    ГВ>>Трудно сказать. Можно спорить о точности и непротиворечивости выделения объекта, но уж заметить разницу между субъектом и объектом, ИМХО, вовсе не сложно.
    K>И что это даст?

    Уточнение семантики термина, вот что может дать спор о точности и непротиворечивости. А отслеживание появления субъектных моментов позволяет отсечь заведомые глупости.

    ГВ>>Верно, верно. Но я не буду называть "среднюю температуру", скажем, "вектором ощущений медперсонала".

    K>Температура Васи Пупкина это вполне нормальный пучек ощущений для медперсонала. Вы знаете какой-то другой способ восприятия окружающей действительности кроме как через ощущения?

    Приборы, мой друг, приборы. (Которых — восемь ) Иногда они куда как более точны, чем ощущения медперсонала.

    ГВ>>Разницу понимаете?

    K>А Вы? В чем она заключается?

    См. выше. Приборы врут реже, чем ощущения. Хотя у кого — как, но это к делу не относится.

    K>>>Начиная с какого знака после запятой это будет точный ответ?

    ГВ>>Это зависит от требований медицины. Безусловно, требования эти могут в перспективе поменяться и измерения будут проводиться, например, с точностью до 0,0001 градуса в двадцати точках на протяжении суток. Тогда термин "средняя температура" обретёт несколько иной смысл.

    K>Я что-то не пойму. Вы утвеждаете, что конкретность — это вопрос договоренности?


    Не без того. Вопрос в том, какой характер носит эта договорённость. Невозможно договориться "смотреть" на вещи определённым образом.

    K>Т.е. если истина всегда конкретна, то это означает, что истина всегда такая, как договоримся?


    Что-то в этом роде, но не надо путать договорённость о, например, достаточной точности термометра и, кхм, "схожие взгляды на жизнь". В первом случае мы можем сделать вывод о вполне конкретном термометре, что он достаточно точен (пригоден для использования) для нашей деятельности, во втором...

    ГВ>>Правда, я не уверен, что в этом соглашении принимало участие некое "общественное большинство", за исключением большинства из каких-то научных организаций.

    K>Я уже писал, что способ установления общепринятости значения для дискуссии не имеет. Сколько еще про это написать?

    Кстати — имеет. Кто пишет в википедию — никому не известно. Это дополнительный камень в огород википедии.

    K>Естественно, что этот вопрос решался не съездом КПСС, а в достаточно узких научных кругах. Тем не менее это не мешает быть общепринятым.


    Правильно. "Вопрос решили" в узких научных кругах, а большинству навязали волю этих самых научных кругов. И очень правильно поступили.

    ГВ>>И заметьте, эталон тепературы сугубо объектен.


    K>Не замечу. То, что мы можем дать объектное определение тройной точке воды, и то что кто-то договорился считать тройную точку воды "эталоном температуры" вовсе не означает, что мы можем дать объектное определение эталону температуры. Понятно?


    Что????? Где в определении эталона упоминаются "взгляды" исследователей на процесс измерения?

    K>Тройная точка существует независимо от культурного контекста, от нас, от наших представлений о ней. "Эталон температуры" вне наших представлений не существует. отношение между тройной точкой и "эталоном температуры" — асимметрично.


    Это понятно. Но где здесь апелляция к субъекту? Возьми эталонные приборы и получишь точное (надёжно повторяемое разными исследователями) значение температуры для того или иного процесса. Где здесь мнение субъекта об эталонности? Есть вполне объектная (и объективная) привязка одних измерительных шкал к другим.

    K>Я же в конце прошлого поста разжевал, как объяснял бы среднешкольнику, что слово "абрикос" это не абрикос. Но все без толку.


    K>>>Думаете, бывает температура, которая не "средняя по"?

    ГВ>>В сущности — согласен.

    K>Почему же тогда по поводу конкретной истины возражаете?


    Какой именно?

    K>>>>>Не осудили. Вы просто пересказали высказывание автора своими словами извратив при этом смысл так, чтобы у любого читателя не потрудившегося ознакомится с оригинальной фразой и ее контекстом была возможность осудить автора самостоятельно, причем за то, в чем он вовсе не виноват.

    ГВ>>>>Мне совершенно не важно, что автор хотел сказать. Важно, в чём это выразилось.
    K>>>Это выразилось во многих впечатлениях от этого высказывания, все они индивидуальны и их невозможно рассматривать отдельно от самого впечатляющегося. Другими словами, Ваши фантазии по поводу автора для Вас важнее, чем фантазии автора по поводу его слов.
    ГВ>>Вы действительно правильно прочли то, что я написал?
    K>Ладно. Поясните, что Вы написали. Поясните это: "в чем это выразилось"

    Выразилось в противопоставлении. Конкретно в том, что "бездумному следованию за большинством" было противопоставлено "бездумное следование за меньшинством". Противопоставление, в общем, не слишком разумное, потому что в случае той дискуссии бездумность при следовании за большинством очевидна.

    K>>>Я знаю до черта примеров, когда гордятся противоположным общим местом, как оригинальным собственным мнением.

    ГВ>>Я тоже. И что? В случае упомянутой дискуссии это было не так.
    K>А по-моему, так и было.

    Но я не заметил попыток опровергнуть это самое "личное мнение" кроме как путём апелляций к субъектному и к коллективу.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[33]: Дополнение к посту Vermicious Knid
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 15.09.06 14:20
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Ребытя. Будьте чесны сами с собой. Вы выбрали Руби и Питон, не потому, что они динамические. А потому что они значитально удобнее чем кайо-нибудь С++ используемый вами до этого как основной язык. Но уже с C# перейти (даже) на Руби очень тяжело. А с какого-нибудь эээ, ну скажем Скалы, чтобы не раздражать население , вообще невозможно, так как серьезно теряещь в функциональности.


    Историческая справка: Ruby я начал использовать в задаче, где любой компилируемый язык отдыхает именно потому, что он компилируемый. И продолжаю его использовать именно из-за динамики. В частности, исполнение Ruby-нового кода только по исходникам является одним из важных факторов удобства использования написанных на Ruby инструментов для управления нашими программными системами. Так что динамика была и есть определяющим фактором использования Ruby как второго основного языка (после C++) в моем случае.

    И кстати, больше всего функциональности находится не в языке, а в фреймворках. Наличие заточенного под нужную прикладную задачу фреймворка X для языка A оставляет язык B за бортом, если для него нет аналогичного фреймворка X'. Каким-бы супер-пупер языком B из себя не казался.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[32]: Дополнение к посту Vermicious Knid
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 15:11
    Оценка:
    Здравствуйте, pavel74, Вы писали:

    P>Это да, поэтому динамические языки и на порядки и менее популярны в массах.


    Казалось бы если они так круты, то почему МС выкинул в помойку свою IDE поддерживающую VBScript/JScropt и написали новую поддеживающую VB.Net и C#?

    P> А не за счет мнимой фатальной "ущербности".


    Ущербность конечно не фатальная, но то что динамика для многих людей и задач является злом — это факт.

    Будующее явно не за ней. Гибкость можно достичь и при тотальном контрле компилятора. Просто это сложнее сделать. Но будующее за сложным изнутри и простым с наружи.

    P> Есть для них своя ниша задач. И для них я бы осознанно выбрал динамический язык, но из-за непопулярности , не такой навороченности IDE, отсутсвия агрессивного маркетинга и промывания мозгов разработчикам и прочих подобных причин — это делать достаточно рисковано.


    Вот у функциональщиков с промывкой мозгов все в ожуре. Круче некуда. Но с популярностью явные проблемы. Так что остаются два фактора маркетинг и наличие каких-то приемуществ.

    Что до IDE, то раз уж динамические языки так круты, и так круты те кто их использует, то почему на них нельзя было давно создать охринительную IDE затмевающую жалкие поделки от МС и ДжетБрэйн? В прочем для меня это вопрос риторический я то точно знаю почему.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[32]: Дополнение к посту Vermicious Knid
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 15:11
    Оценка:
    Здравствуйте, pavel74, Вы писали:

    P>Понятно что "скорострельность", особенно на числодробилках меньше.


    Не то слово. И меня это не радует.

    P> Да и "высока" "невысока" понятия относительные — если ее хватает для решаемых задач то все ок, не так ли


    Рад за таких людей. У меня почему-то за что не возьмусь все время о приозводительности приходится думать.

    P> , особенно в свете роста быстродействия компутеров .


    Это ты о 10% за последние 4 года?

    P>Щас последует возражение типа — ну чем быстрее потенциальные возможности тем круче. Но опять же повторюсь — если ее хватает для решаемых задач то все ок.


    Возражение последует другое. На сеогдня есть языки компиляторы которых пораждают код сравнимый по быстродействию с С++-ным и при этом эти языки значительно выразительнее Смолтока. К тому же они являются статически типизированными. Так зачем держаться за славное детище Ксерокса опередившее свое время в 70-ых?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[31]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 15:11
    Оценка: 2 (1) +2
    Здравствуйте, Сергей Туленцев, Вы писали:

    СТ>Никто не говорит, что на них надо делать основную логику работы приложения.


    В том-то и дело, что исключения в данном случае приведены в качестве оправдания для такой же неконтролируемой передачи управления в штатных ситуациях.

    Причем это выдается за мега-крутость. Вот в чем проблема.

    СТ> Просто обычно работа с исключениями происходит так: где-то в самом низу что-то сломалось и оттуда вылетает исключение, и летит вверх по стеку вызовов, потому что никто не знает, что с ним делать. И вот оно наконец долетает до верхнего уровня, который знает, как можно было бы починить ситуацию, но — поздняк метатться, стек то размотан уже.


    На самом деле есть разные методы обработки исключений. Например, в VB их можно обрабатвать и в месте появления. Только по жизни это не дает особых приемуществ, так как слишком муторно.

    СТ>Есть у нас некий анализатор (функция верхнего уровня). Она может парсить логи. Логи хранятся в файлах и состоят из записей |entries).

    СТ>Так вот, предположим, что в процессе работы parse-log-entry ей встретилась запись неправильного формата (malformed entry). Она и знать не знает о том, что ей делать в таком случае, потому выбрасывает исключение. parse-log-file тоже не знает, что делать, и пробрасывает его дальше (прерывая тем самым обработку файла в милллон записей). То же и с analyze-log, плюс еще теряется информация о том, какой именно из тысячи файлов мы только что обрабатывали. И вот наконец, дело доходит до верхнего уровня, который знает про "политику партии", что же далать в таких случаях.

    Я знаю. Уволить такого проектировщика. А приложение переписать так чтобы или оно знало как парсить все что нужно в нужной точке, или ввести сменные стратегии оформив их в виде функций высшего порядка или классов.

    Подобная ситуация или является фатальной ошибкой (разработчик пропусли одну из возмжностей), или построением логики на исключениях (весто той же Стратегии).
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[32]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 15:11
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>если возникает необходимость делать обработку исключений в зависимости от некоторых условий (продолжить, прервать работу), то здесь просто напрашивается паттерн "стратегия". и никаких проблем


    Ага. А еще лучше просто ссылка на функцию умеющую отпарсить нужный фрагмент. Что в общем-то те же яйца только в профиль, но проще.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[23]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 15:11
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>http://www.rsdn.ru/Forum/Message.aspx?mid=2107260&amp;only=1
    Автор: Eugene Beschastnov
    Дата: 13.09.06


    Конечно, всё это не догма. Бывают исключения.

    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[17]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 15:11
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>
    FR>using System;
    
    FR>class MainApp 
    FR>{
    FR>    public static int get(int x)
    FR>    {
    FR>    if (x > 5)
    FR>     {
    FR>     throw new System.NotSupportedException(); 
    FR>     }
    FR>    return x + 1;
    FR>    }
        
    FR>    public static void Main() 
    FR>    { 
    FR>        int x = get(10);
    FR>        Console.WriteLine(x);     
    FR>    }
    FR>}
    FR>


    И что? Конкретно этот код содержит ошибку или в "if (x > 5)" или в "get(10)". Ошибку логическую. Когда ты запустишь этот код, то получишь исключение вырубающее приложение. Но сам код можно, точнее нужно по прежнему читать как если бы он был написан без исключений. Для логики приложения исключений не должно существовать. Если ты начинашь строить логику в зависимости от исключения, то можно сливать воду. Приложение ты или не допишишь, или он будет дико ключить.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[17]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 15:11
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Ok. Но более точно будет сказать так: "Мне тяжело писать exception safety код, вне зависимости от языка, на котором это делается".


    ОК, меня это устраивает. Со своей стороны скажу, что "Мне легко писать код так кая я умею пользоваться исключениями.".

    E> Просто потому, что когда исключения повсюду, очень легко забыть, что они повсюду.


    Моя позиция — так как ислючения всюду, то о них просто не надо думать. Они живут в другом мире. Они не являются частью программы.

    E>Все остальное написанное тобой я могу назвать только чепухой.


    Это многое говорит... о тебе.

    E> Либо ты не понимаешь, что такое exception safety (ой ли?), либо ты просто не хотел вдумчиво прочитать написанное мной и так же вдумчиво ответить.


    Либо ты не понимашь сути исключений, и не хочешь даже допускать мысли, что ты просто жил неверно.

    E> Если есть желание, то ответь, пожалуйста, нормально и по существу. Обвинения в незнании и непонимании оставь для кого-нибудь RSDN-овского новичка.


    Это не обвинения. Это мое мнение. Я бы с удовольствием нашел бы мягкие слова, но оных нет.

    У нас с тобой очень разное мнение о том что такое исключение. Возможно этому можно было бы посвятить отдельную тему. Но к сожалению мне эта тема мало интересна. Я ее для себя закрыл лет эдак 5 назад.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[41]: А как оно в Nemerle?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 15:11
    Оценка: +1
    Здравствуйте, Beam, Вы писали:

    B>Я говорил про макросы, а не про замыкания.


    Макросы не являются рантайм-сущьностями или сущьностями высшего порядка. Макрос это нечто преобразующее один код в другой. Их нельзя передать куда-то. Из них нельзя выйти и т.п. По этому return в макросе — это все равно что return в сишном блоке кода. То есть код:
    foreach (x in y)
    {
        return;
    }

    не отличается от кода:
    {
        return;
    }

    Блоки же кода в Смолтоке — это функции высшего порядка с замыканиями.

    И вообще, неуже ли не очевдино, что return не имеет право кидать исключений, а выражения обязаны возвращать результат в шатных ситуациях? Неуже ли не очевидно, что если это не так, то это плохо?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[29]: Не нужность super return (нелок. возврата) [рассм. п
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 15:11
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    FDS>>Вот накинулись, как будто я её не знаю

    S>По коду не видно этого знания.

    А, что по гипотетическому коду с вымышленными операторами вроде super return действительно можно судить о знаниях человека? Или просто захотелось человека по шапке стукнуть, чтобы место знал?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[23]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 15:11
    Оценка: 1 (1) :)
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>Прочитай внимательнее ссылку — это не теоретические рассуждения о том, как хорошо бы делать, это прямой подсчёт строк во всех методах для трёх основных диалектов. Там даже код приведён, который этот подсчёт выполняет.


    Про среднюю темпиратуру по больнице слышал? У одного человека она комнатная, у другого под 40, а в среднем она 36.6. Вот такая же фигня с кодом в метода. В одном (и их много) методе одна строка, в другом 100. В среднем 7.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[7]: Дополнение
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 15:11
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Молодой человек, итересующийся программированием с огоньком в глазах -- это и есть та будущая элита программирования. Встретится с таким -- большая удача.


    Ну, вот чтоб этот мальчик от обиды не пошел админом работать таких как Колхоз и Вин2к на пушечный выстрел к сайту этому подпускать нельзя.

    А Гене с его самосознанием надо бы работу менять. А то он явно относится к тому большинству о котором Колхозы так не лестно отзвались.

    Лично я делю людей на талантливых и не очень, на тех у кого есть огонек в глазах и тех у кого нет, на опытных и молодых, на горячих и выдержанных, но не на элиту и быдло.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    О славном лекаре Уленшпигеле
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 15.09.06 15:41
    Оценка:

    62

    Однажды Уленшпигель явился в Нюрнберг и выдал там себя за великого
    лекаря, от всех недугов целителя, знаменитого желудкоочистителя, лихорадок
    славного укротителя, всех язв известного гонителя, чесотки неизменного
    победителя.
    В нюрнбергской больнице некуда было класть больных. Молва об
    Уленшпигеле дошла до смотрителя — тот разыскал его и осведомился, правда
    ли, что он справляется со всеми болезнями.
    — Со всеми, кроме последней, — отвечал Уленшпигель. — А что касается
    всех прочих, то обещайте мне двести флоринов — я не возьму с вас и лиара
    до тех пор, пока все ваши больные не выздоровеют и не выпишутся из
    больницы.
    На другой день, приняв торжественный и ученый вид, он уверенно пошел по
    палатам. Обходя больных, он к каждому из них наклонялся и шептал:
    — Поклянись, — говорил он, — что свято сохранишь тайну. Чем ты болен?
    Больной называл свою болезнь и Христом-богом клялся, что никому ничего
    не скажет.
    — Так знай же, — говорил Уленшпигель, — что завтра я одного из вас
    сожгу, из пепла сделаю чудодейственное лекарство и дам его всем остальным.
    Сожжен будет лежачий больной. Завтра я прибуду сюда вместе со смотрителем,
    стану под окнами и крикну вам: "Кто не болен, забирай пожитки и выходи на
    улицу!"
    Наутро Уленшпигель так именно и поступил. Тут все больные — хромающие,
    ковыляющие, чихающие, перхающие — заспешили к выходу. На улицу высыпали
    даже такие, которые добрый десяток лет не вставали с постели.
    Смотритель спросил, точно ли они поправились и могут ходить.
    — Да, — отвечали они в полной уверенности, что одного из них сжигают
    сейчас во дворе.
    Тогда Уленшпигель обратился к смотрителю:
    — Ну, раз все они вышли и говорят, что здоровы, — стало быть, плати.
    Смотритель уплатил ему двести флоринов. И Уленшпигель был таков.
    Но на другой день больные вновь явились пред очи смотрителя в еще
    худшем состоянии, чем вчера; лишь одного из них исцелил свежий воздух, и
    он, напившись пьяным, бегал по улицам с криком: "Слава великому лекарю
    Уленшпигелю!"


    (c) Легенда об Уленшпигеле

    Это к вопросу о договорённостях и объективности терминологии.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[18]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 15.09.06 16:35
    Оценка: -4 :))
    Здравствуйте, VladD2, Вы писали:

    VD>Когда ты запустишь этот код, то получишь исключение вырубающее приложение.


    Внимание! Если кто-то считает, что после бросания исключения программа должна вырубиться, поставте пожалуйста "+" Владу в его пост.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[33]: Дополнение к посту Vermicious Knid
    От: pavel74  
    Дата: 15.09.06 16:39
    Оценка: +2
    Здравствуйте, VladD2, Вы писали:


    VD>Гибкость можно достичь и при тотальном контрле компилятора. Просто это сложнее сделать. Но будующее за сложным изнутри и простым с наружи.

    О — тоже верно! "Просто это сложнее сделать" — дык часто бывает надо не сложнее а быстрее, а скорости работы результата более чем хватает.


    VD>Что до IDE, то раз уж динамические языки так круты, и так круты те кто их использует, то почему на них нельзя было давно создать охринительную IDE затмевающую жалкие поделки от МС и ДжетБрэйн?


    Влад, ну чего ты заладил "так круты" , никто и неговорит что супер-круты и круче токо горы, нету "серебрянной" пули. Есть в "динамике" своя привлекательность, ты это сам даже признал, несколькими постами выше. Smalltalk я бы сказал вообще стоит особняком от других динамическиз языков, да это и не только язык а целый взгляд на разработку, можно сказать что в нем другой подход к разработке, а именно про то что в нем интерактивный, инкрементальный принцип построения приложения малыми кусочками с активным применением TDD и принципов экстремального программирования, в отличии от традиционного подхода write-complie-debug. Лично мне такой принцип разработки (еще раз — интеактивное инкрементальное построение программы мальнькими кусочками) очень нравиться. Возможно что ради него Smalltalk и проектировался, динамичечская типизация использована чтобы решить данную задачу. Не замечал к примеру такую особенность — что часто делаются навороченные фраймворки, а потом большая часть прикладного функционала реализуется за счет всяких XML конфигов и настроек (естественно без контроля компилятора).

    VD>В прочем для меня это вопрос риторический я то точно знаю почему.

    И почему же? Хотя для меня вопрос тоже риторический и на первых планах здесь никак ни "не правильность языка". А зря кстати если бы МС выпустил достойный аналог Smaltalk-а и также активно пиарил бы его возможно что бы "майнстрим" бы был бы совсем другой.
    Re[34]: Дополнение к посту Vermicious Knid
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 16:51
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Историческая справка: Ruby я начал использовать в задаче, где любой компилируемый язык отдыхает именно потому, что он компилируемый.


    Помню, помню. Было срочно нужно написать свой мэйк.

    E> И продолжаю его использовать именно из-за динамики.


    Меня то зачем зомбировать?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[23]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 16:51
    Оценка:
    Здравствуйте, Klapaucius, Вы писали:

    K>Вечер юмора. Выходит, яблоко можно правильно назвать только на языке Адама и Евы? Вот умора! Да сам труд, который потребуется для исторических исследований, направленных на выяснение первого автора термина настолько "не экономичен", что дальше можно и не обсуждать.


    Вот именно! По тому люди придумали энциклопедические и толковые словари и т.п. Но всегда находятся упертые товарищи, кооторые придают все это анафиме и громко заявляют окружающим, что знают истинную истину (с).
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[2]: Снова про парадигму
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 16:51
    Оценка:
    Здравствуйте, Klapaucius, Вы писали:

    K>Вы считаете, что невозможен язык, в котором абрикосу будет соответствовать языковой знак "яблоко"?


    Как иллюстрация меня всегда прикалывало звучание слова "west" в английсоком. Ведь по логике ГВ оно должно оначать "восток", а не "запад" это это есть на самом деле.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re: Вопрос к Sinclair
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 16:51
    Оценка: :)
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>А можно узнать, с чем ты так настойчиво не согласен?


    Ты все равно не поймешь. Он ведь ответит общепринятыми понятиями, а ты ведь их не признашь.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[14]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 16:51
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

    Ген, мне кажется пора давно остановиться. Тебе уже несколько человек продемонстриоваало явные логические ляпы в твоих рассуждениях, но ты все равно продолжаещь делать хорошую мину и гнуть свое.

    Ведь в такой ситуации разумно или тихо прекратить обсуждение, или вообще признать — да был не прав...

    Сколько можно продолжать эту бодягу?

    И ведь из-за чего? Просто захотелось на зло Владам поддержать хама с распухшим самомнением? Неуже ли ты действительно хочешь относить к такой "элите"?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[20]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 16:59
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>Должен быть обратный вопрос: есть ли у C# серъезные преимущества перед Эйфелем.


    1. Привычный для сишника.
    2. Имеющий отличную инфраструктуру (библиотеки, IDE, документация).
    3. Доступный (бесплатно или за копейки).

    Уже этого более чем достаточно.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[35]: Оффтопик: Nemerle
    От: FR  
    Дата: 15.09.06 16:59
    Оценка: +1
    Здравствуйте, VladD2, Вы писали:

    VD>Я бы так сказал, они как и C# хреново функциональные. То есть писать на них в функциональном стиле моно, но зачастую это менее удобно чем в императивном.


    За счет того что в них функции первоклассные писать в функциональном стиле гораздо удобней чем в шарпе.
    Re[33]: Дополнение к посту Vermicious Knid
    От: FR  
    Дата: 15.09.06 16:59
    Оценка: +4 :))) :))
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, FR, Вы писали:


    FR>>Того что выделено не достаточно. Я тоже когда смотрел придерживался практически такого же мнения о динамике как ты сейчас.


    VD>Цитирую, как говорится, классиков .

    VD>

    Я вот не мало в свое мремя пописал на разных динамических языках.


    Между тем же VB и питоном с руби разница не меньше чем между фортраном и шарпом
    Поэтому и интересно на каком именно динамическом языке ты много писал.

    FR>> eao197 тоже помнится говорил здесь об этом же. А насчет пописал на разных динамических языках можешь сказать на каких именно и примерный объем кода.


    VD>Ребытя. Будьте чесны сами с собой. Вы выбрали Руби и Питон, не потому, что они динамические. А потому что они значитально удобнее чем кайо-нибудь С++ используемый вами до этого как основной язык. Но уже с C# перейти (даже) на Руби очень тяжело. А с какого-нибудь эээ, ну скажем Скалы, чтобы не раздражать население , вообще невозможно, так как серьезно теряещь в функциональности.


    Люблю твои выводы читать
    Тебе надо серъезно задуматся о карьере писателя — фантаста
    Re[35]: Дополнение к посту Vermicious Knid
    От: FR  
    Дата: 15.09.06 16:59
    Оценка: +1
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, FR, Вы писали:


    FR>>Конечно может быть и так как ты описываешь, если вызывающий код сам явно проверяет проверяет типизацию. Но для динамики гораздо полезнее думать в терминах сообщений,


    VD>Стоп, стоп, стоп. Думать ты можешь как хочешь. Вообще в программировании зачастую думать о сущьностях лучше не в терминах реализации, а в терминах более абстрактных. Например, те же замыкания можно воспринимать как кросивю магию, а можно как генерацию классов или редукцию графов.


    Ты как раз и думаешь больше в терминах реализации.

    VD>Но мы же говорим о производительсности в данном случае? А раз так, то мы дожны говорить о реализации. И тут все печально. Все замечательные разговоры об оптимизациях умных рантаймов таят как только вот такие вот умники распираемые от крутости своего динамического языка пихают в список элементы разного типа и начинают "пользоваться динамикой". Это моментально приводит к кончине как производительности так и надежности.


    Мы говорили про приведения типов, и твое описание подобное описанию например C++ классов глазами ассемблерщика, но ты перескочил на производительность.


    FR>>А джит компиляторы это уже успешно делали до того как вообще менеджед языки со статической типизацией появились.


    VD>Не, не, не. Никаких JIT-компиляторов если вы хотите динамики. Джиты живут до той поры пока ваша динамика является по сути статикой. Джиту нужна статическая информация о типах. Ситуацию спасает то, что джит максимально приближен к времени выполнения и может получать информацию о типах на поздних стадиях. Но она ему нужна как воздух. Без нее JIT будет вставлять код интерпретатора в прямо в тела методов.


    Есть и другие методики, в обсуждениях смаллтока их не раз перетирали, а тебя похоже заклинило на одной конкретной реализации jit'а и все остальное ты видишь только преломленным через это свое понимание.
    Re[18]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 15.09.06 17:12
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    E>>Ok. Но более точно будет сказать так: "Мне тяжело писать exception safety код, вне зависимости от языка, на котором это делается".


    VD>ОК, меня это устраивает. Со своей стороны скажу, что "Мне легко писать код так кая я умею пользоваться исключениями.".


    Совсем маленькое дополнение: я написал "мне тяжело писать exception safe код", а ты говоришь о просто коде ("мне легко писать код"). Небезопасный по отношению к исключениям код и я пишу без проблем. А ты попробуй безопасный написать.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[35]: Дополнение к посту Vermicious Knid
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 15.09.06 17:17
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    E>>Историческая справка: Ruby я начал использовать в задаче, где любой компилируемый язык отдыхает именно потому, что он компилируемый.


    VD>Помню, помню. Было срочно нужно написать свой мэйк.


    Да. И не жалею. И не я один.

    E>> И продолжаю его использовать именно из-за динамики.


    VD>Меня то зачем зомбировать?


    Нужно мне это, как же.
    Просто ты ошибочно полагаешь, что компилируемые языки во всех областях могут заменить динамически типизированные.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[34]: Дополнение к посту Vermicious Knid
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 17:19
    Оценка:
    Здравствуйте, pavel74, Вы писали:

    VD>>Гибкость можно достичь и при тотальном контрле компилятора. Просто это сложнее сделать. Но будующее за сложным изнутри и простым с наружи.

    P>О — тоже верно! "Просто это сложнее сделать" — дык часто бывает надо не сложнее а быстрее, а скорости работы результата более чем хватает.

    Не надо извращать моис лова. "Просто это сложнее сделать" относится к разработке языка, а не к его применению.

    VD>>Что до IDE, то раз уж динамические языки так круты, и так круты те кто их использует, то почему на них нельзя было давно создать охринительную IDE затмевающую жалкие поделки от МС и ДжетБрэйн?


    P>Влад, ну чего ты заладил "так круты"


    Да потому что это крутость уже из всех дыр. Много слов о том что динамически языки лучше, но большая часть софта пишется не на них, а банальное сравнение объемов кода показвает, что эти самые крутые динамически в дрызг проигрывают новым статическим языкам.

    P> , никто и неговорит что супер-круты и круче токо горы, нету "серебрянной" пули.


    Дык как раз говорят. И я уж даже сам начал верить. Но вот копнул... и все не так гладно. Точно совсем печально.

    P> Есть в "динамике" своя привлекательность, ты это сам даже признал, несколькими постами выше.


    Я и не отказываюсь от этого. Да, есть плюсы. Но они же пораждают минусы. А главное, что есть факторы независящие от того динамический язык или нет. Вот паттерн-матчинг, например. Он есть в статическом, но компонентном Немерле, в динамическом Эрланге и в статическом и совсем не компонентном ОКамле. И веще он неизменно дает отличный резуальтат с точки зарения выразительности. И лично я оцениваю этот фактор более высоко нежели некоторые динамические феньки. Ведь паттерн-матчинг не дает подбных эффектов вроде проблем с производительностью или необходимости тотального юнит-тестирования.

    P> Smalltalk я бы сказал вообще стоит особняком от других динамическиз языков, да это и не только язык а целый взгляд на разработку, можно сказать что в нем другой подход к разработке, а именно про то что в нем интерактивный, инкрементальный принцип построения приложения малыми кусочками с активным применением TDD и принципов экстремального программирования, в отличии от традиционного подхода write-complie-debug.


    Мне кажется это выдуманное дистанцирование. Любой хороший Питонец или Рубиец может рассказать тебе тоже самое. А самое смешное, что хороший C#-повец тоже. TDD вопрос спорный. Для динамики — это костыль. А для статики полезное дополнение.

    P> Лично мне такой принцип разработки (еще раз — интеактивное инкрементальное построение программы мальнькими кусочками) очень нравиться.


    Не поверишь, но мне тоже. Так что у нас много общего. Только в одном мы расхдится. Ты считашь, что он хорош только для Смолтока, а я использую его везде. Вот на С++ это было очень неудобно, правда. Ну, да мир его праху, как говорится.

    P> Возможно что ради него Smalltalk и проектировался, динамичечская типизация использована чтобы решить данную задачу.


    И как же она решает эту задачу? И почему же эта задача неплохо решается и в C#?
    Все мои програмы написанные на C# писались именно так. Маленькими инкреминтальными шажками с постоянном тестированием (но чаще без юнит-тестов).

    P> Не замечал к примеру такую особенность — что часто делаются навороченные фраймворки, а потом большая часть прикладного функционала реализуется за счет всяких XML конфигов и настроек (естественно без контроля компилятора).


    Разное бывает. Бывает как ты говоришь, а бывает что XML применяется с котролем по схеме (или еще как) и очень по месту.

    VD>>В прочем для меня это вопрос риторический я то точно знаю почему.

    P>И почему же?

    Потому что в реалии все по другому. И динамические языки откровенно не лучший выбор в больших и сложных проектах требующих высокой эффективности кода (а IDE это именно тот случай), и программисты успешно гнущие пальцы на форумах сталкивась со сложными проектами откровенно пасуют (причем по фигу каки они предпочитают языки), и сами динамические языки создают море трудностей при разработке IDE (информация то о типах есть только в рантайме в месте выполения). В итоге есть что есть. Самые крутые среды для Смолтока (о Руби и Питоне вообще не говорю) на поверку оказываются середнячками сильно уступающими лушим IDE для Java и C#.

    P> Хотя для меня вопрос тоже риторический и на первых планах здесь никак ни "не правильность языка". А зря кстати если бы МС выпустил достойный аналог Smaltalk-а и также активно пиарил бы его возможно что бы "майнстрим" бы был бы совсем другой.


    Это уже делал IBM. И очень упроно делал. Во второй половине 90-ых прошлого века. Но кончилось все тем, что эти проекты были выброшены на свалку истории, и сейчас IBM во всю развивает Яву.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[19]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 17:19
    Оценка: +1
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    VD>>Когда ты запустишь этот код, то получишь исключение вырубающее приложение.


    ANS>Внимание! Если кто-то считает, что после бросания исключения программа должна вырубиться, поставте пожалуйста "+" Владу в его пост.


    Ну, или минус тебе за демагогию и извращение чужих слов.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[34]: Дополнение к посту Vermicious Knid
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 15.09.06 17:21
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>Кстати:


    VD>>Жык это еще хуже. Чтобы этот метод выбрать нужно взять каждый объект узнать его теальный тип (в массиве он ведь не приведенным к базовому типу вроде object лижит) и только потом вызвать метод. Причем все дожно быть по ссылке. Никакие джит-компиляторы тут ничего сделать не согут. Это будет опасный и тормозной код.

    EB>Несомненно, это именно та причина, по которой JIT-компилятор впервые появился именно в Smalltalk.

    Влад, и с чем же ты не согласен?
    --
    Бесчастнов Евгений
    Re[35]: Дополнение к посту Vermicious Knid
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 15.09.06 17:28
    Оценка: +1
    Здравствуйте, VladD2, Вы писали:

    VD>"класс объекта записан в самом объекте" — это и есть "лежит приведенным к базовому типу вроде object" если говорить в терминах Ява/дотнет-рантайма.


    Если говорить в терминах Java/DotNET — да, это максимальное приближение к реальности. И что? В реальности-то никакого "приведения типов" нету. А так получается, как в анекдоте:
    — Слышал я вашего Карузо, фигня полная. Шепелявит, в ноту не попадает, ритм не выдерживает.
    — А где ты его слышал-то?
    — Да мне Рабинович напел.

    PS. А еще можно рассуждать о функциональном программировании в терминах, например, Java
    --
    Бесчастнов Евгений
    Re[36]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 17:35
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>За счет того что в них функции первоклассные писать в функциональном стиле гораздо удобней чем в шарпе.


    C# 3.0 смотрел?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[36]: Дополнение к посту Vermicious Knid
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 17:35
    Оценка: :)
    Здравствуйте, eao197, Вы писали:

    E>Просто ты ошибочно полагаешь, что компилируемые языки во всех областях могут заменить динамически типизированные.


    Я не предполагаю. Я это делаю. И в областях куда мои руки дотянулись мне скрипты не нужны.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[34]: Дополнение к посту Vermicious Knid
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 17:35
    Оценка: :)
    Здравствуйте, FR, Вы писали:

    VD>>Цитирую, как говорится, классиков .

    VD>>

    Я вот не мало в свое мремя пописал на разных динамических языках.


    FR>Между тем же VB и питоном с руби разница не меньше чем между фортраном и шарпом


    И что? Он от этого динамическим перстал быть? Да и речь не о VB. Это ты его сюда прилепил.

    FR>Поэтому и интересно на каком именно динамическом языке ты много писал.


    Их было шутк 5. Самый известный тебе наверно JScript. Столкнуться с ним пришлось в следствии того что это единственный язык для веб-страничек. 3 штуки это языки к разным финансовым системам.

    FR>Люблю твои выводы читать

    FR>Тебе надо серъезно задуматся о карьере писателя — фантаста

    ОК. Пошел думать. А то что-то я слишком много времени стал проводить с читательской аудиторией.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[36]: Дополнение к посту Vermicious Knid
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 17:35
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>Ты как раз и думаешь больше в терминах реализации.


    Ты меня с кем-то путаешь.

    FR>Мы говорили про приведения типов, и твое описание подобное описанию например C++ классов глазами ассемблерщика, но ты перескочил на производительность.


    Поднимись выше... почитай еще раз.

    FR>Есть и другие методики, в обсуждениях смаллтока их не раз перетирали, а тебя похоже заклинило на одной конкретной реализации jit'а и все остальное ты видишь только преломленным через это свое понимание.


    Меня не заклинило. Я реалист практик. А вы верите в чудеса.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[19]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 17:35
    Оценка: 81 (2) :))) :))
    Здравствуйте, eao197, Вы писали:

    E>Совсем маленькое дополнение: я написал "мне тяжело писать exception safe код", а ты говоришь о просто коде ("мне легко писать код"). Небезопасный по отношению к исключениям код и я пишу без проблем. А ты попробуй безопасный написать.


    Еще раз. Мой код работает если в нем нет ошибок. А его отношение к рекламыным слоганам вроде exception safe меня просто не интересует.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[35]: Дополнение к посту Vermicious Knid
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 17:35
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

    VD>>>Жык это еще хуже. Чтобы этот метод выбрать нужно взять каждый объект узнать его теальный тип (в массиве он ведь не приведенным к базовому типу вроде object лижит) и только потом вызвать метод. Причем все дожно быть по ссылке. Никакие джит-компиляторы тут ничего сделать не согут. Это будет опасный и тормозной код.

    EB>>Несомненно, это именно та причина, по которой JIT-компилятор впервые появился именно в Smalltalk.

    EB>Влад, и с чем же ты не согласен?


    С отсуствием логической связи. Ее тут просто нет.

    Ну, и еще с тем, что JIT появился в Смолтоке. В Смолтоке появилось название JIT. А динамическая компиляция была в Лиспе за долго до первой версии Смолтока. Но это уже не важно.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[24]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 17:35
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Вот интересно. Пусть дорогой разработчик на Java в Москве получает $3K в месяц. И требуется ему писать софт, который работает под Windows, Linux, Solaris и MacOS. Затраты на него будут составлять $3K в месяц + $500 на приобретение IDEA. JDK для всех этих платформ бесплатен.


    Плата за IDE в рассчете на месяц?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[36]: Дополнение к посту Vermicious Knid
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 15.09.06 17:44
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>Если говорить в терминах Java/DotNET — да, это максимальное приближение к реальности. И что? В реальности-то никакого "приведения типов" нету.


    Как раз в реальности приведение или динамическая диспечерезация с анализом типа есть, но от тебя это всячески скрывается. По этому ты не вдишь разницу между массивом мономорфным и полиморфным.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[2]: Вопрос к Sinclair
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 15.09.06 17:48
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    ГВ>>А можно узнать, с чем ты так настойчиво не согласен?

    VD>Ты все равно не поймешь. Он ведь ответит общепринятыми понятиями, а ты ведь их не признашь.

    Да почему же не признаю? На общепринятом: раз молчит, значит сказать нечего.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[15]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 15.09.06 17:48
    Оценка: -1
    Здравствуйте, VladD2, Вы писали:

    VD>Ген, мне кажется пора давно остановиться. Тебе уже несколько человек продемонстриоваало явные логические ляпы в твоих рассуждениях, но ты все равно продолжаещь делать хорошую мину и гнуть свое.


    Ну, знаешь, если то, что мне тут говорят в ответ называть "логикой", то Кэрролл нервно отступает в Страну Чудес.

    VD>Ведь в такой ситуации разумно или тихо прекратить обсуждение, или вообще признать — да был не прав...


    Так я и признавал её там, где на то были основания. Основной тезис всё равно не опровергнут (в силу неопровержимости).

    VD>Сколько можно продолжать эту бодягу?


    Да не скажи, не скажи. Любопытная дискуссия получилась.

    VD>И ведь из-за чего? Просто захотелось на зло Владам поддержать хама с распухшим самомнением? Неуже ли ты действительно хочешь относить к такой "элите"?


    Для таких вопросов есть e-mail. Комментировать сие не буду.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[8]: Дополнение
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 15.09.06 17:48
    Оценка: +1 :))
    Здравствуйте, VladD2, Вы писали:

    VD>А Гене с его самосознанием надо бы работу менять. А то он явно относится к тому большинству о котором Колхозы так не лестно отзвались.


    Влад, я очень ценю твои телепатические и прочие паранормальные способности, но по-моему, тебя заносит. В отпуск пора, адназначна.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[2]: Потому что...
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 15.09.06 17:57
    Оценка: :)
    Здравствуйте, IT, Вы писали:

    ГВ>>Подскажу. Потому что мои оппоненты часто занимаются демагогией.

    IT>Ты думаешь, обвинив других в демагогии, можно полностью реабилитироваться?

    Если ты заметил, я не обвиняю оппонентов в демагогии голословно. Уж коль скоро само слово "демагогия" ныне оказалось затёртым до дыр, то приходится прямо указывать на присущие ей приёмы.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[24]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 15.09.06 18:02
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, Eugene Beschastnov, Вы писали:


    EB>>Прочитай внимательнее ссылку — это не теоретические рассуждения о том, как хорошо бы делать, это прямой подсчёт строк во всех методах для трёх основных диалектов. Там даже код приведён, который этот подсчёт выполняет.


    VD>Про среднюю темпиратуру по больнице слышал? У одного человека она комнатная, у другого под 40, а в среднем она 36.6. Вот такая же фигня с кодом в метода. В одном (и их много) методе одна строка, в другом 100. В среднем 7.


    И? Это что-то опровергает? Если да, то поясни, пожалуйста, свою мысль.

    Кстати, интересно — какое среднее количество строк в методе в стандартной большой программе на Nemerle? Например, компилятор Nemerle на самом Nemerle написан (я не в курсе)? Вот в нём, например. И заодно интересно было бы посмотреть на программу, выполняющую этот подсчёт (тоже на Nemerle, разумеется).
    --
    Бесчастнов Евгений
    Re[20]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 15.09.06 18:02
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    E>>Совсем маленькое дополнение: я написал "мне тяжело писать exception safe код", а ты говоришь о просто коде ("мне легко писать код"). Небезопасный по отношению к исключениям код и я пишу без проблем. А ты попробуй безопасный написать.


    VD>Еще раз. Мой код работает если в нем нет ошибок. А его отношение к рекламыным слоганам вроде exception safe меня просто не интересует.


    Некоторое время назад здесь была дискуссия на эту тему. Участвовали Павел Кузнецов, Wolfhound и ваш покорный слуга. Поищи, там было кое-что интересное.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[20]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 15.09.06 18:03
    Оценка: 50 (4) :))) :))) :))
    Здравствуйте, VladD2, Вы писали:

    VD>Мой код работает если в нем нет ошибок.


    Я распечатаю эту фразу, возьму под стекло в рамку и на стенку повешу. Оно того стоит.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[24]: Насколько важен синтаксис языка?
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 15.09.06 18:06
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, Eugene Beschastnov, Вы писали:


    EB>>http://www.rsdn.ru/Forum/Message.aspx?mid=2107260&amp;only=1
    Автор: Eugene Beschastnov
    Дата: 13.09.06


    VD>

    Конечно, всё это не догма. Бывают исключения.


    Я в час ночи что-то не соображу, кого ты цитируешь. Ну да это не важно.

    Имеем — все три основных (на данный момент) диалекта Smalltalk являются исключением (по твоим словам). Вопрос: они являются исключениями каждый по отдельности или весь Smalltalk в целом?
    --
    Бесчастнов Евгений
    Re[21]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 15.09.06 18:09
    Оценка: 10 (1)
    Здравствуйте, Геннадий Васильев, Вы писали:

    E>>>Совсем маленькое дополнение: я написал "мне тяжело писать exception safe код", а ты говоришь о просто коде ("мне легко писать код"). Небезопасный по отношению к исключениям код и я пишу без проблем. А ты попробуй безопасный написать.


    VD>>Еще раз. Мой код работает если в нем нет ошибок. А его отношение к рекламыным слоганам вроде exception safe меня просто не интересует.


    ГВ>Некоторое время назад здесь была дискуссия на эту тему. Участвовали Павел Кузнецов, Wolfhound и ваш покорный слуга. Поищи, там было кое-что интересное.


    Недавно была еще и вот такая тема: http://www.rsdn.ru/Forum/?mid=1276409
    Автор: mishaa
    Дата: 16.07.05

    Там Паша привел интересные ссылки на статьи, посвященные forward и backward recovery.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[19]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 15.09.06 18:09
    Оценка: :)
    Здравствуйте, Дарней, Вы писали:

    ГВ>> Нельзя делать выводы о качественных сторонах продукта по его распространённости.


    Д>если ты веришь, что тебя окружают одни идиоты и ты один на коне и весь в белом — то нельзя. Как же можно верить мнению идиотов, когда ты — самый умный и знаешь про это.

    Д>Если же ты более реалистично относишься к своим умственным способностям, то надо понимать, что просто так ничего не получается. И распространенность — в том числе.

    "Ты чё, самый умный, што-ли?" Ну вот что здесь отвечать?
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[18]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 15.09.06 18:11
    Оценка: +1
    Здравствуйте, VladD2, Вы писали:


    VD>И что? Конкретно этот код содержит ошибку или в "if (x > 5)" или в "get(10)". Ошибку логическую. Когда ты запустишь этот код, то получишь исключение вырубающее приложение. Но сам код можно, точнее нужно по прежнему читать как если бы он был написан без исключений. Для логики приложения исключений не должно существовать. Если ты начинашь строить логику в зависимости от исключения, то можно сливать воду. Приложение ты или не допишишь, или он будет дико ключить.


    По моему тут просто хорошо подходит поговорка про бревно в своем глазу и соринку в чужом
    И в смаллтоке и в шарпе писать такой код плохой стиль, но запретить это ни там ни тут нельзя.
    Re[21]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 15.09.06 18:11
    Оценка:
    Здравствуйте, VladD2, Вы писали:


    VD>Уже этого более чем достаточно.


    Я имел в виду что учитывая возраст конурентов у шарпа и шасов должно было не быть
    Re[33]: Дополнение к посту Vermicious Knid
    От: FR  
    Дата: 15.09.06 18:11
    Оценка:
    Здравствуйте, VladD2, Вы писали:


    VD>Что до IDE, то раз уж динамические языки так круты, и так круты те кто их использует, то почему на них нельзя было давно создать охринительную IDE затмевающую жалкие поделки от МС и ДжетБрэйн? В прочем для меня это вопрос риторический я то точно знаю почему.


    Весело, читать такое в теме где обсуждается смаллтолк
    Re[21]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 15.09.06 18:12
    Оценка: +1
    Здравствуйте, eao197, Вы писали:

    VD>>Мой код работает если в нем нет ошибок.

    E>Я распечатаю эту фразу, возьму под стекло в рамку и на стенку повешу. Оно того стоит.

    Женя, спасибо! А то у меня совсем глаз замылился.

    PS.: Владу — заслуженная "3x"!
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[33]: Дополнение к посту Vermicious Knid
    От: pavel74  
    Дата: 15.09.06 18:12
    Оценка: 28 (2) +1
    Здравствуйте, VladD2, Вы писали:

    VD>Возражение последует другое. На сеогдня есть языки компиляторы которых пораждают код сравнимый по быстродействию с С++-ным

    Замечательно.

    VD>и при этом эти языки значительно выразительнее Смолтока. К тому же они являются статически типизированными.

    Гм, чо по новой Ладно погнали:
    В массиве есть целые , даблы , натуральные дроби, неограниченные целые, например надо найти рядом стоящие значения удовлетворяющие определенному выражению типа что-то такое : prevItem * 2 = curItem.



    VD>Так зачем держаться за славное детище Ксерокса опередившее свое время в 70-ых?


    Повторюсь (все IMHO), по степени важности:
    — мне нравиться интерактивный, инкрементальный принцип построения программы. когда программа делается небольшими кусочками которые тут же начинают работать. +TDD +XP. Это все мне нравиться больше всего остального вместе взятого.
    — динамический язык позволяет делать краткий и выразительный код (см. пример выше);
    — отсутсвие типизации лично мне нравится тем что я могу во многих местах не думать какие конкретно будут типы (числа или коллекции), я уверен что какие-бы не были (или вдруг по условию задачи диапазон типов расширился) код использующий их будет верным и к тому же без лишнего синтаксического мусора в виде приведения типов нужного токо для компутера, а не для чтения кода. Т.е. все числовые типы понимают операцию "+" и т.п., все коллекции понимают итератор do: и т.д.
    — очень мало и простые правила языка. язык проще изучать спецам предметной области (не программерам) с не замутненными мозгами и как показывает практика — Smalltalk им нравится .


    Ну и для объективности не нравиться (также по степени важности):
    — IDE заметно отстают от VS2005. Т.к. стоко бабла как у МС нет видимо ни у одного из производителей ST. К примеру Dolphin — это фирма из 2-х разработчиков и собственно владельцев, но надо отдать им должное что вдвоем умудрились сделать и качетсвенную VM и саму IDE.
    — отсутствие богатого дяди, промывающего всем мозги и жесткого маркетинга, из-за этого рапрастранненость малая и неясно будущее и нет развития.
    — непривычный синтаксис после обычного (Delphi, VB, C) . Честно скажу — непривычный но на фоне достоинтсв, уже привык.
    — быстродействие хуже чем у компиляторов, хотя это для моих задач (бизнес-логика, бизнес-приложения) не проблема вообще, как правило все упирается в БД.

    Еще раз повторю — все вышеозвученное это мое личное мнение, мои впечатления. Я считаю что озвученные моменты вполне объективны, но надо понимать что для каждого (в силу привычек, взглядов на жизнь , видов решаемых задач и т.п.) они могут иметь свой вес кому-то больше кому-то меньше, так-что результат суммирования может быть как положительным так и отрицательным .
    Re[37]: Оффтопик: Nemerle
    От: FR  
    Дата: 15.09.06 18:14
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, FR, Вы писали:


    FR>>За счет того что в них функции первоклассные писать в функциональном стиле гораздо удобней чем в шарпе.


    VD>C# 3.0 смотрел?


    Так оно еще не вышло, а когда я уже писал на питоне в функциональном стиле и второй шарп был только в проекте.
    Тройка конечно большой шаг вперед.
    Re[35]: Дополнение к посту Vermicious Knid
    От: FR  
    Дата: 15.09.06 18:33
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, FR, Вы писали:


    VD>>>Цитирую, как говорится, классиков .

    VD>>>

    Я вот не мало в свое мремя пописал на разных динамических языках.


    FR>>Между тем же VB и питоном с руби разница не меньше чем между фортраном и шарпом


    VD>И что? Он от этого динамическим перстал быть? Да и речь не о VB. Это ты его сюда прилепил.


    Ну ты его упоминаешь часто, но это совсем не то

    FR>>Поэтому и интересно на каком именно динамическом языке ты много писал.


    VD>Их было шутк 5. Самый известный тебе наверно JScript. Столкнуться с ним пришлось в следствии того что это единственный язык для веб-страничек. 3 штуки это языки к разным финансовым системам.


    Интересно какие?
    Jscript самый опасный и слабый из современной динамики, разница близка к разнице между шарпом и C++

    FR>>Люблю твои выводы читать

    FR>>Тебе надо серъезно задуматся о карьере писателя — фантаста

    VD>ОК. Пошел думать. А то что-то я слишком много времени стал проводить с читательской аудиторией.


    Re[37]: Дополнение к посту Vermicious Knid
    От: FR  
    Дата: 15.09.06 18:33
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, FR, Вы писали:


    FR>>Ты как раз и думаешь больше в терминах реализации.


    VD>Ты меня с кем-то путаешь.


    Может слегка, c IT

    FR>>Мы говорили про приведения типов, и твое описание подобное описанию например C++ классов глазами ассемблерщика, но ты перескочил на производительность.


    VD>Поднимись выше... почитай еще раз.


    Почитал

    FR>>Есть и другие методики, в обсуждениях смаллтока их не раз перетирали, а тебя похоже заклинило на одной конкретной реализации jit'а и все остальное ты видишь только преломленным через это свое понимание.


    VD>Меня не заклинило. Я реалист практик. А вы верите в чудеса.


    Угу я тоже думал что java никогда ни сможет приблизится по скорости к C++.
    Re[36]: Дополнение к посту Vermicious Knid
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 15.09.06 19:05
    Оценка: 1 (1)
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, Eugene Beschastnov, Вы писали:


    VD>>>>Жык это еще хуже. Чтобы этот метод выбрать нужно взять каждый объект узнать его теальный тип (в массиве он ведь не приведенным к базовому типу вроде object лижит) и только потом вызвать метод. Причем все дожно быть по ссылке. Никакие джит-компиляторы тут ничего сделать не согут. Это будет опасный и тормозной код.

    EB>>>Несомненно, это именно та причина, по которой JIT-компилятор впервые появился именно в Smalltalk.

    EB>>Влад, и с чем же ты не согласен?


    VD>С отсуствием логической связи. Ее тут просто нет.


    Логика очень простая — если бы всё было именно так, как ты описываешь, то в Smalltalk JIT-компиляцию просто не сделали бы — потому что это не давало бы никакого выигрыша.

    VD>Ну, и еще с тем, что JIT появился в Смолтоке. В Смолтоке появилось название JIT. А динамическая компиляция была в Лиспе за долго до первой версии Смолтока. Но это уже не важно.

    Dynamic translation was <b>pioneered</b> by the commercial Smalltalk implementation currently known as VisualWorks, in the early 1980s. (выделение моё)
    Твой источник?
    --
    Бесчастнов Евгений
    Re[35]: Дополнение к посту Vermicious Knid
    От: pavel74  
    Дата: 15.09.06 19:20
    Оценка: 6 (1)
    Здравствуйте, VladD2, Вы писали:

    VD>>>Гибкость можно достичь и при тотальном контрле компилятора. Просто это сложнее сделать. Но будующее за сложным изнутри и простым с наружи.

    P>>О — тоже верно! "Просто это сложнее сделать" — дык часто бывает надо не сложнее а быстрее, а скорости работы результата более чем хватает.

    VD>Не надо извращать моис лова. "Просто это сложнее сделать" относится к разработке языка, а не к его применению.

    Хм, эта твоя мысль из текста была не очевидна, ну да ладно.


    VD>Да потому что это крутость уже из всех дыр. Много слов о том что динамически языки лучше, но большая часть софта пишется не на них, а банальное сравнение объемов кода показвает, что эти самые крутые динамически в дрызг проигрывают новым статическим языкам.

    Ну почему всегда крайности-то типа "в дрызг проигрывают", много же разных факторов, начиная от языка кончая ситуацией в мире.

    P>> , никто и неговорит что супер-круты и круче токо горы, нету "серебрянной" пули.


    VD>Дык как раз говорят. И я уж даже сам начал верить. Но вот копнул... и все не так гладно. Точно совсем печально.

    У меня после прочтения множественных подобных флеймов здесь создалось такое впечатление — кто-то осторожно упомянет, что вот типа в динамических языках есть что-то интересное привлекательное , тут же появляется Влад с разгромными аргументами и естесно в ответ следуют не менее разгромные аргументы. В основном состязанию идут с переменным успехом в области словесных баталий


    P>> Есть в "динамике" своя привлекательность, ты это сам даже признал, несколькими постами выше.


    VD>Я и не отказываюсь от этого. Да, есть плюсы. Но они же пораждают минусы. А главное, что есть факторы независящие от того динамический язык или нет. Вот паттерн-матчинг, например. Он есть в статическом, но компонентном Немерле, в динамическом Эрланге и в статическом и совсем не компонентном ОКамле. И веще он неизменно дает отличный резуальтат с точки зарения выразительности.

    А кто-то разве спорит что паттерн-матчинг плохо, реально хорошая вещь.


    P>> Лично мне такой принцип разработки (еще раз — интеактивное инкрементальное построение программы мальнькими кусочками) очень нравиться.


    VD>Не поверишь, но мне тоже. Так что у нас много общего. Только в одном мы расхдится. Ты считашь, что он хорош только для Смолтока, а я использую его везде.

    Принцип хорош сам по себе, вне зависимости от языка. Я считаю что в Smalltalk он реализован наиболее полно и тотально, и в основном из-за этого Smalltalk мне и нравится.

    P>> Возможно что ради него Smalltalk и проектировался, динамичечская типизация использована чтобы решить данную задачу.


    VD>И как же она решает эту задачу? И почему же эта задача неплохо решается и в C#?

    VD>Все мои програмы написанные на C# писались именно так. Маленькими инкреминтальными шажками с постоянном тестированием (но чаще без юнит-тестов).
    Хм, к примеру, в Smalltalk:
    — разработка программы всегда идет как бы в run-time-е.
    — всегда можно добраться до любого объекта и до любой точки текущего отлаживаемого стека и посмотреть значения любых переменных и внутренних инстанс переменных класса. (это наверняка есть и в C#)
    — если какая проблема то состояние объектов не сбрасывается, просто в отладке находиш причину как праваило ее устраняеш и продолжаеш выполнение дальше.
    — всегда могу добавить новый класс и тут же его заюзать в отлаживаемом методе, исправив код прямо в дебугере.
    — могу изменять кол-во инстанс переменных в классе (добавить или удалить), при этом живые экземпляры класса не ломаются.
    — могу у любого класса посмотреть какие у него есть инстансы.
    — могу для любого инстанса посмотреть кто на него ссылается.
    — могу для любого класса добавлять удалять методы.
    — все это можно делать программно.
    — все эти правки не требуют прерывания работы программы (с потерей состояния), перекомпиляции и перезагрузки.

    Что-то я сомневаюсь что есть какие-та аналоги Smalltalk-а в этом плане, я по крайне мере про них не слышал.


    VD>Самые крутые среды для Смолтока (о Руби и Питоне вообще не говорю) на поверку оказываются середнячками сильно уступающими лушим IDE для Java и C#.

    Токо дело тут в количесвте денег и человеко-лет вбуханных в эти IDE.


    VD>Это уже делал IBM. И очень упроно делал. Во второй половине 90-ых прошлого века. Но кончилось все тем, что эти проекты были выброшены на свалку истории, и сейчас IBM во всю развивает Яву.

    Это же политика, IBM поняла что ей срочно пора "дружить" против Microsoft и друга она нашла в Java (Sun-е) и еще Oracle с этой компанией "дружит", понятно против кого .
    Re[37]: Дополнение к посту Vermicious Knid
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 15.09.06 22:33
    Оценка: 140 (6)
    Здравствуйте, Eugene Beschastnov, Вы писали:

    По поводу истории JIT посмотри сюда, по-моему, интересный экскурс.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    NB
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 16.09.06 00:45
    Оценка:
    Здравствуйте, Klapaucius, Вы писали:

    Не исключаю ничего из сказанного мной ранее, просто дополню.

    K>Вы вообще отклоняетесь от темы. Речь идет не о противопоставлении двух конкретных определений. А о противопоставлении распространенной и нераспространенной терминологии. Возражение против распространенного определения не содержало в себе ни указания на некорректность определения ни указания на его объектность-субъектность. Оно содержало только то, что распространенное определение плохое потому, что оно распространенное.Все. Больше ничего там не было. И Вы еще скажете что не стоит придумывать за автора то, что он хотел сказать, но не сказал?


    Вы упускаете очень важный момент, имело место противопоставление:

    VD>И не надо путать высказывания каких-то отдельных личностей сделанных даже не по поводу ООП, а по поводу их понимания "объектных систем" с общепринятыми и четко определенными понятиями.

    АК>То есть ты предпочитаешь адаптированное для масс определение неудобному для тебя оригинальному определению, даному ее создателем.


    Определение не называли "плохим" только лишь из-за того, что оно общепринятое (якобы). Вроде бы, очевидно, что АК предлагал определение Кея, в ответ на что его призвали следовать "общепринятому". Процитированный ответ, ИМХО, сам не без приколов, но в отсутствии логики по существу обвинить сложно.

    Но моё-то главное возражение направлено на призыв следовать за большинством в сочетании с отсутствием критической оценки в адрес мнения этого самого большинства. Впрочем, об этом я уже писал.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[3]: Потому что...
    От: IT Россия linq2db.com
    Дата: 16.09.06 01:40
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>>>Подскажу. Потому что мои оппоненты часто занимаются демагогией.

    IT>>Ты думаешь, обвинив других в демагогии, можно полностью реабилитироваться?

    ГВ>Если ты заметил, я не обвиняю оппонентов в демагогии голословно.


    Если ты заметил, я тоже
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[21]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 16.09.06 02:04
    Оценка: +1 :))) :)
    Здравствуйте, eao197, Вы писали:

    E>Я распечатаю эту фразу, возьму под стекло в рамку и на стенку повешу. Оно того стоит.


    Копирайт не забудь.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[37]: Дополнение к посту Vermicious Knid
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 16.09.06 02:04
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>Логика очень простая — если бы всё было именно так, как ты описываешь, то в Smalltalk JIT-компиляцию просто не сделали бы — потому что это не давало бы никакого выигрыша.


    Я не могу монять ты просто в проблематике не разбирашся или прикидывашся?
    JIT бессмысленнен для описанного тобой примера "крутизны" динамики. Но он неполохо может работать там где "крутизны" нет, а есть код оперирующий с четко определенными типами. JIT, точнее динамическая компиляция в купе с хоть какой-то аннотацией типов может ускорить любой язык. Но чудес не бывает. Реальные приложения на динамических языках будут всегда медленее чем аналогичные написанные на статически типизированных (не важно явно или с выодом типов).

    EB>Dynamic translation was <b>pioneered</b> by the commercial Smalltalk implementation currently known as VisualWorks, in the early 1980s. (выделение моё)

    EB>Твой источник?

    http://en.wikipedia.org/wiki/Lisp_programming_language далее ищи по словам Incremental Compilation. Так же можно просто гуглем на слова "Incremental Compilation" POP-2 и LISP. Когда то я читал статью где как раз описывалась история этого дела. Они не додумались тогда назвать это дело JIT-ом или даеть ему другое звучное имя, но идеи были заложены именно ими. Причем насколько я понимаю все это делалось на макросах самого Лиспа.

    Кстати, JIT тоже появился впервые не в Смолтоке, а в его потомке — Self-е. Вот первую коммерческую реализацию джита вроде бы действительно сделали в Смолтоке.

    Так же забавно, что на сегодня вроде как Смолтоковские джиты уступают Явовским и дотнетным. Как раз проявляется отсуствие статической типизации.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[4]: Потому что...
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 16.09.06 02:35
    Оценка:
    Здравствуйте, IT, Вы писали:

    ГВ>>>>Подскажу. Потому что мои оппоненты часто занимаются демагогией.

    IT>>>Ты думаешь, обвинив других в демагогии, можно полностью реабилитироваться?
    ГВ>>Если ты заметил, я не обвиняю оппонентов в демагогии голословно.
    IT>Если ты заметил, я тоже

    Это ты в очередной раз "систему уравновешиваешь"?
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[38]: Дополнение к посту Vermicious Knid
    От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
    Дата: 16.09.06 06:43
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Здравствуйте, Eugene Beschastnov, Вы писали:


    ГВ>По поводу истории JIT посмотри сюда, по-моему, интересный экскурс.


    Спасибо, действительно интересный и полезный документ.
    --
    Бесчастнов Евгений
    Re[27]: Оффтопик: Nemerle
    От: thesz Россия http://thesz.livejournal.com
    Дата: 17.09.06 23:22
    Оценка:
    IT>Что касается умных слов, то с этим на RSDN всегда было всё в порядке. Такие люди всегда welcome и их есть на RSDN, в том числе и среди функциональщиков.

    *ушёл думать*
    Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
    Re: Вопрос к Sinclair
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 18.09.06 01:36
    Оценка: +3
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>А можно узнать, с чем ты так настойчиво не согласен?

    C тем, что существует "правильное" значение термина, отличное от мнения большинства. Вот у нас, к примеру, продают "кедровые орешки". Любой ботаник скажет, что это вранье — это никакой не кедр, а какая-то-там сосна. А кедры растут только на дальнем востоке, и орешки у них такие, что не всякий зуб возьмет.

    Но когда магазин закупает продукты на оптовом складе, его представитель будет полным идиотом, если начнет требовать "сосновые". Потому как в этой области термин "кедровые орехи" вполне однозначно устоялся и является общепринятым. Термин выполняет в первую очередь коммуникативную функцию, а не деноминативную. Есть развитие значения терминов, связанное с эволюцией наших знаний.
    Заявления насчет эксклюзивности права автора термина на трактовку его значения на мой взгляд вообще выходят за пределы здравого смысла.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[2]: Вопрос к Sinclair
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 18.09.06 04:15
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    ГВ>>А можно узнать, с чем ты так настойчиво не согласен?

    S>C тем, что существует "правильное" значение термина, отличное от мнения большинства. Вот у нас, к примеру, продают "кедровые орешки". Любой ботаник скажет, что это вранье — это никакой не кедр, а какая-то-там сосна. А кедры растут только на дальнем востоке, и орешки у них такие, что не всякий зуб возьмет.

    S>Но когда магазин закупает продукты на оптовом складе, его представитель будет полным идиотом, если начнет требовать "сосновые". Потому как в этой области термин "кедровые орехи" вполне однозначно устоялся и является общепринятым. Термин выполняет в первую очередь коммуникативную функцию, а не деноминативную. Есть развитие значения терминов, связанное с эволюцией наших знаний.


    S>Заявления насчет эксклюзивности права автора термина на трактовку его значения на мой взгляд вообще выходят за пределы здравого смысла.


    Смотри, как интересно получается.

    ГВ>Либо же значение термина должно параллельно уточняться, например, уполномоченными на то группами. В любом случае, круг тех, кто определяет значение термина должен быть достаточно узок, иначе мы превратим совершенно любую коллективную деятельность в бесконечные дебаты.


    То, о чём ты говоришь, как раз и есть пример "терминоопределяющей" деятельности относительно узкой группы.

    И потом, твой пример не совсем корректен. Ты говоришь, фактически, о торговой марке — их могли и "семенами марсианского подсолнуха" назвать, но никому же ни придёт в голову утверждать на ботаническом форуме, что то, что лежит в пакетиках, таки да — действительно кедровые орехи.

    Термин выполняет в первую очередь коммуникативную функцию, а не деноминативную.


    Дык ведь в том-то и фокус, что, фигурально выражаясь, "результат коммуникативной функции" в случае субъектно-направленной трактовки термина становится слишком неоднозначным. Каждый становится волен подразумевать под термином всё, что ему заблагорассудится. Хороша же коммуникация...
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[2]: Вопрос к Sinclair
    От: FR  
    Дата: 18.09.06 05:02
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>Здравствуйте, Геннадий Васильев, Вы писали:


    ГВ>>А можно узнать, с чем ты так настойчиво не согласен?

    S>C тем, что существует "правильное" значение термина, отличное от мнения большинства. Вот у нас, к примеру, продают "кедровые орешки". Любой ботаник скажет, что это вранье — это никакой не кедр, а какая-то-там сосна. А кедры растут только на дальнем востоке, и орешки у них такие, что не всякий зуб возьмет.

    Растение называется "Сосна сибирская кедровая (Pinus sibirica Du Tour)" так что кедровые орешки вполне правильное, но не совсем точное название
    Re[34]: Оффтопик: Nemerle
    От: thesz Россия http://thesz.livejournal.com
    Дата: 18.09.06 06:49
    Оценка: 6 (2)
    VD>>Ошибашся. Я как-то читал, что эксперемены по паттерн-матчингу были за долго до МЛ-я.
    FR>Ну не знаю не силен в истории, может злобные функциональщики просветят
    FR>Хотя вполне допускаю что многие из новых языков прототипировались на лиспе.

    ML писался, как метаязык (Meta Language) для системы доказательств, написанной на Лиспе. Если почитать Zinc experiment — описание дизайна Caml Лероем, — то там можно встретить упоминание о корнях ML, и как это отражалось на проверке типов.

    Сами алгебраические типы растут ногами из ZF — Zermelo-Frenkel set theory, — и основанной на ней Z notation. Там даже синтаксис совпадает почти один-в-один с современными вариантами. Z notation — это самое начало 70-х.

    FR>Да я согласен в общем. Просто по этому определению и руби и питон тоже функциональные языки.


    И Си.

    Поэтому — это бессмысленное определение.
    Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
    Re[25]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 18.09.06 07:54
    Оценка: -3 :))
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>Кстати, интересно — какое среднее количество строк в методе в стандартной большой программе на Nemerle?


    Судя по тем примерам, которые тут давали, то это рулоны на 2 экрана.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[22]: Мужик сказал, мужик ... :) (~60Kb)
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 18.09.06 09:25
    Оценка: 151 (9) :))) :))) :))) :))) :))) :)))
    Здравствуйте, VladD2, Вы писали:

    E>>Я распечатаю эту фразу, возьму под стекло в рамку и на стенку повешу. Оно того стоит.


    VD>Копирайт не забудь.


    Вот (за качество пока извиняюсь, мобильником снимок сделан):




    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[23]: Мужик сказал, мужик ... :) (~60Kb)
    От: Lazy Cjow Rhrr Россия lj://_lcr_
    Дата: 18.09.06 09:55
    Оценка: +2 :)))
    eao197,

    VD>>Копирайт не забудь.


    E>Вот (за качество пока извиняюсь, мобильником снимок сделан):

    E>http://www.rsdn.ru/File/31476/VladD2_my_code_works_800x600x8bit.jpg



    PS: Слющай, а гдэ слон?
    quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
    Re[24]: Не нужно спекуляций
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 18.09.06 10:30
    Оценка: 36 (5) +1
    Здравствуйте, Lazy Cjow Rhrr

    Николай, знаешь, что самое смешное во всем этом? В том, что особо смешного то не так уж и много. Это как раз шутка, в которой есть всего лишь доля (не большая причем) шутки.

    У меня первым впечатлением от процесса проверки правильности программы стало то, что этот процесс вообще необходим. Когда только приступаешь к программированию с удивлением обнаруживаешь, что программы почему-то содержат на порядки больше ошибок, чем ты можешь это себе представить. Но все равно, в самом начале пути обучения программированию существует мнение: "Мой код работает!". Без всяких оговорок, именно так ультимативно.

    Причем, как отмечают некоторые писатели, программисты всегда отличаются завидным оптимизмом. И с налету берутся за написание с нуля или полное переписывание сложных программ, предполагая при этом, что у них получится качественный результат. Т.е. уверенность в том, что "мой код работает" (без всяких оговорок), постоянно в программистах присутствует.

    В свое время, где-то в середине первого курса, меня очень поразила фраза Дейкстры (если не ошибаюсь с авторством): тесты могут показать только наличие ошибок, но не могут доказать их отсутствие. Это было второе сильное впечатление от процесса проверки правильности программы.

    И так, в моем собственном умозрительном представлении до недавного времени существовала такая цепочка слоганов, которые характеризуют отношение программиста к качеству его кода:

    "Мой код работает!" --> ??? --> "Тесты не могут доказать отсутствие ошибок" --> ???


    Вопросиками показаны белые пятна -- интуиция подсказывает, что на их месте должны быть какие-то соответствующие слоганы, но вот самих слоганов не было. И вот тут Влад выдает фразу, которая является одним из недостающих звеньев в этой цепочке:
    "Мой код работает!" -->
       "Мой код работает, если в нем нет ошибок" --> ???
          "Тесты не могут доказать отсутствие ошибок" --> ???


    Так что я вопринимаю данную фразу не как "шутку юмора", а как очень точную и лаконичную характеристику определенной стадии отношения программиста к качеству своего кода.

    Так что я прошу, не смотря на очень большой налет юмористичности, не развивать эту тему в сторону соревнования в остроумии. Как бы смешно данная фраза не звучала, но она очень емкая и очень удачная. Именно это в ней ценно.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[25]: Не нужно спекуляций
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 18.09.06 10:39
    Оценка: 18 (2)
    Здравствуйте, eao197, Вы писали:
    E>
    E> ??? --> "Тесты не могут доказать отсутствие ошибок"
    E>


    Перед "тут", вероятно, должно быть "мой код работает, если на него есть тесты"
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[26]: Не нужно спекуляций
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 18.09.06 10:48
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    E>>
    E>> ??? --> "Тесты не могут доказать отсутствие ошибок"
    E>>


    ANS>Перед "тут", вероятно, должно быть "мой код работает, если на него есть тесты"


    Или же в такой формулировке: "Протестированный код работает".

    И кстати, существует и такой феномен: до поры, до времени, даже ошибочный код работает правильно.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[27]: Не нужно спекуляций
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 18.09.06 10:51
    Оценка: +4
    Здравствуйте, eao197, Вы писали:

    E>Или же в такой формулировке: "Протестированный код работает".


    точно.

    E>И кстати, существует и такой феномен: до поры, до времени, даже ошибочный код работает правильно.


    угу. даже удивляешся, как оно раньше могло работать вообще.
    То есть баг не то, что оно не работает, а баг, то что оно работает (работало)
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[26]: Насколько важен синтаксис языка?
    От: Klapaucius  
    Дата: 18.09.06 12:32
    Оценка: 1 (1) +1
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>>Кстати, интересно — какое среднее количество строк в методе в стандартной большой программе на Nemerle?
    ANS>Судя по тем примерам, которые тут давали, то это рулоны на 2 экрана.

    Учитывая то, что внутри метода возможна функциональная декомпозиция, это, вообще говоря, никакого значения не имеет.
    Для немерле или там скалы имеет смысл говорить не о размере метода, а о размере вложенной функции или конкретного паттерна в блоке match. Ограничивать размер метода в таких языках 7ю строками, требование того же уровня адекватности, что и ограничивать 7ю строками размер класса в яве.
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re[34]: Дополнение к посту Vermicious Knid
    От: Klapaucius  
    Дата: 18.09.06 12:32
    Оценка: +1 :))
    Здравствуйте, pavel74, Вы писали:

    VD>>и при этом эти языки значительно выразительнее Смолтока. К тому же они являются статически типизированными.

    P>Гм, чо по новой Ладно погнали:
    P>В массиве есть целые , даблы , натуральные дроби, неограниченные целые, например надо найти рядом стоящие значения удовлетворяющие определенному выражению типа что-то такое : prevItem * 2 = curItem.

    Что??? Мой контраргумент такой: дан массив, а в нем сепульки, гравицапы и шалтаи-болтаи.
    Дайте определение произведения сепульки и гравицапы на натуральное число.
    Ага! Глазами хлопаешь, студент? Значит за мной правда!

    Вы бы, кроме шуток, постеснялись что-ли такие вопросы задавать. Тем более, что на них уже отвечали.
    Неужели нельзя нормальный пример, демонстрирующий превосходство динамической типизации показать?
    По существу:
    Есть какой-нибудь класс типов Number с соответствующими операторами. Потом используем PM. Все нормально работает и не жужжит. Полностью статическое. E2 — убил?
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re: О славном лекаре Уленшпигеле
    От: Klapaucius  
    Дата: 18.09.06 12:32
    Оценка: :))) :))

    Наконец на Таирии высадился известный космический шкипер,
    неустрашимый Ао Мурбрас с двумя собаками в скафандрах, чтобы поохотиться
    на загадочных тварей. Через пять дней он вернулся один в состоянии
    крайнего изнеможения. По его словам, невдалеке от Таирии из туманности
    вдруг вынырнуло множество чудовищ, опутавших щупальцами и его, и собак;
    но отважный охотник выхватил нож и, размахивая им наудачу, освободился от
    смертельных объятий, жертвой которых стали, однако, бедные псы. На
    скафандре Мурбраса, изнутри и снаружи, остались следы борьбы, а в
    нескольких местах к нему прилипли какие-то зеленые обрывки, словно от
    волокнистых стеблей. Ученая комиссия, тщательно исследовав волоконца,
    признала их фрагментами многоклеточного организма, хорошо известного на
    Земле, а именно Solanum Tuberosum, клубненосного растительного организма
    с перисто-раздельными листьями, привезенного испанцами из Америки в
    Европу в XVI веке. Это известие взбудоражило всех, и трудно описать, что
    началось, когда кто-то перевел ученые выводы на обычный язык и оказалось,
    что Мурбрас принес на своем скафандре стебельки картофельной ботвы.
    Доблестный шкипер, глубоко уязвленный предположением, будто в
    течение четырех часов он сражался с картошкой, потребовал, чтобы комиссия
    отказалась от своего клеветнического заключения, но ученые ответили, что
    не вычеркнут ни единого слова. Волнения сделались всеобщими. Возникли
    движения картофелистов и антикартофелистов, охватившие сначала Малую, а
    потом и Большую Медведицу; противники осыпали друг друга самыми тяжкими
    оскорблениями. Все это, однако, побледнело в сравнении с тем, что
    случилось, когда к спору подключились философы. Из Англии, Франции,
    Австралии, Канады и Соединенных Штатов съезжались самые выдающиеся
    теоретики познания и представители чистого разума, и результат их усилий
    был поистине поразительным.
    Физикалисты, исследовав вопрос всесторонне, заявили, что если тела А
    и В движутся, то дело условности — говорить, движется ли А относительно В
    или В относительно А. Так как движение — вещь относительная, с одинаковым
    правом можно сказать, что человек движется относительно картофеля или же
    что картофель движется относительно человека. Поэтому вопрос о том, может
    ли картофель двигаться, становится бессмысленным, а вся проблема —
    мнимой, то есть несуществующей.
    Семантики заявили, что все зависит от того, как понимать слова
    "картофель", "может" и "двигаться". Так как ключом является модальный
    глагол "мочь", то его надлежит тщательно исследовать. Затем они
    приступили к созданию Энциклопедии Космической Семасиологии, первые
    четыре тома которой посвящались модальным значениям глагола "мочь".
    Неопозитивисты заявили, что непосредственно нам даны не пучки
    картофеля, а пучки непосредственных ощущений; затем они создали
    логические символы, означающие "пучок картофеля" и "пучок ощущений",
    построили специальное исчисление высказываний из сплошных алгебраических
    знаков и, исписав море чернил, пришли к математически точному и,
    несомненно, верному выводу, что 0==0.
    Томисты заявили, что Бог создал законы природы, чтобы при случае
    творить чудеса, ибо чудо есть нарушение законов природы, а где нет
    законов, там и нарушать нечего. В данном случае картофель будет
    двигаться, если на то будет воля Предвечного; но неизвестно, не уловка ли
    это проклятых материалистов, стремящихся подорвать авторитет церкви, так
    что нужно подождать решения Высшей Ватиканской Коллегии.
    Неокантианцы заявили, что все вещи суть творения духа, объективному
    познанию недоступные; если у вас появилась идея движущегося картофеля, то
    движущийся картофель будет существовать. Однако это только первое
    впечатление, ибо дух наш столь же непознаваем, как и его создания; так
    что, значит, ничего не известно.
    Холисты-плюралисты-бихевиористы-физикалисты заявили, что, как
    известно из физики, закономерность в природе бывает только
    статистической. Подобно тому как нельзя вполне точно предугадать путь
    отдельного электрона, так нельзя предсказать в точности, как будет вести
    себя отдельная картофелина. До сих пор наблюдения показывали, что
    миллионы раз человек копал картошку; но не исключено, что один раз из
    миллиарда случится наоборот и картошка будет копать человека.
    Профессор Урлипан, одинокий мыслитель школы Расселла и Рейхенбаха,
    подверг все эти высказывания уничтожающей критике. Он утверждал, что
    человек не имеет никаких непосредственных ощущений, ведь он ощущает не
    словесное выражение образа стола, а самый стол; а так как, с другой
    стороны, известно, что о внешнем мире ничего не известно, то не
    существует ни внешних вещей, ни чувственных ощущений. "Нет вообще ничего,
    — заявил профессор Урлипан, — а кто думает иначе, тот заблуждается". Так
    что о картофеле ничего нельзя сказать, хотя и по совершенно иной причине,
    чем считают неокантианцы.

    (с) Станислав Лем, Путешествие двадцать пятое.

    К тому же вопросу.
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re: Контрольную устроить, что-ли?
    От: Klapaucius  
    Дата: 18.09.06 12:32
    Оценка: 6 (1) :)
    Здравствуйте, Геннадий Васильев, Вы писали:

    K>>Вы сами вдумайтесь в то, что вы говорите. Есть статья. Вы находите толкование термина, употребляемого в статье и это толкование вам не нравится — и что теперь? Статья плохая? Мрак. Жуть.

    ГВ>Если эти две статьи в одном источнике — то да, мрак и жуть. Поскольку недоверие, вызванное толкованием закономерно вызывает недоверие и к самой исходной статье.

    У Википедии нет ответственного редактора. Считать ее одним источником можно с тем же успехом, что и считать одним источником сумму знаний человечества.

    K>>Вы вообще отклоняетесь от темы. Речь идет не о противопоставлении двух конкретных определений. А о противопоставлении распространенной и нераспространенной терминологии. Возражение против распространенного определения не содержало в себе ни указания на некорректность определения ни указания на его объектность-субъектность. Оно содержало только то, что распространенное определение плохое потому, что оно распространенное.Все. Больше ничего там не было. И Вы еще скажете что не стоит придумывать за автора то, что он хотел сказать, но не сказал?

    ГВ>Куда я отклоняюсь? Речь вообще-то о недопустимости принятия "общепринятого" на основании одной лишь распространённости.

    В общем случае да, когда речь идет о терминологии — нет.

    ГВ>>>Взгляд — это действие субъекта ("программист глядит на программу"). Это не может быть частью определения, претендующего на большее, чем банальный трёп.

    K>>С какой стати? Для вас субъектность какое-то непонятное зло. Чуть что сразу — анафема! Вы бы хоть разъяснили чем это плохо. Только покороче, если можно.
    K>>А вместо этого все доказываете субъектное... программист глядит... в чем проблема-то?
    ГВ>Контрольная работа: передайте мне свой взгляд на это сообщение. Верифицируйте правильность передачи взгляда. Ну или просто опишите сам метод передачи взгляда.

    Верифицировать нельзя практически ничего. Даже Ваше любимое 2*2, насколько я помню, пролетает. И что дальше?

    K>>>>Особенно в данном случае забавным виглядит альтернатива — мнение, аргументированное незнанием (тут, конечно, все в порядке или просто придираться не хочется?).

    ГВ>>>В противовес субъектному определению любое объектное подходит.
    K>>1) Это еще нужно доказать
    ГВ>Двойка авансом.

    Дельное замечание.

    ГВ>>>>>Значит, общество не до конца понимает суть явления, раз оперирует терминологией на основе субъектных определений.

    K>>>>И что? Почему это может помешать оперированию именно такой терминологией?
    ГВ>>>Да нет, ничего не может помешать. Каждый волен сходить с ума по-своему.
    K>>Вы не отклоняйтесь в область психиатрии. Вы обясните где еще может быть парадигма, если не в голове программиста, который смотрит программу.
    ГВ>Понимаете ли, нельзя путать "парадигму" как агрегатное (объектное!) понятие и тот эффект, который возникает в голове конкретного наблюдателя при следовании ей.

    А если парадигма не существует в какой бы то ни было другой форме, кроме как возникая в голове наблюдателей при следовании ей?

    K>>Если вы так волнуетесь по этому поводу, дайте определение термина "определение". Имеют ли определения физический смысл? Или это может только взгляд, существующий в голове?

    ГВ>На бумаге, во всяком случае, я видел множество определений самых разнообразных вещей. Ergo, это не только тараканы в голове.

    (бъется головой о столешницу). Уффф... Испачканая бумага существует в основном для того, чтобы не подзабыть своих тараканов.
    Плюшевый медведь с Антареса, случись ему увидеть эту бумажку с определением воспримет определение?
    Нет. Потому, что он вне культурного контекста? Понятно?
    Если мы напишем на бумаге "тигрокрыс" станут ли тигрокрысы существовать в реальном мире? Опять таки нет.
    И кто из нас двоечник?

    K>>>>2) Претензия к определению термина "парадигма" в Википедии. Т.е. даже не к определению ООП, а к определению, на которое из статьи ООП есть ссылка.

    K>>>>Эти два возражения по существу?
    ГВ>>>Второе — по существу, но мой контртезис таков: субъектными определениями нельзя пользоваться.
    K>>Вы не обосновали это утверждение.
    ГВ>Кол — тем же авансом.

    Опять замечанеи по делу.

    ГВ>>>Определение ООП включает в себя "взгляд" в составе описания (через "парадигму"). Ergo, это определение некорректно по факту, его даже рассматривать нельзя в качестве определения.

    K>>Некорректным определением пользоваться можно. Если его знают.
    ГВ>А что оно будет определять, будучи заведомо некорректным? Всё, что захочет очередной оратор? Хорошенькое же определение!

    А много есть корректных определений? Вы о какой корректности все время толкуете?
    Вы можете задать некое исчисление определений, доказать его непротиворечивость, а потом доказывать с помощью этого исчисления корректность определений?
    Корректных определений не бывает, бывают актуальные. Ну определяли в средние века луну, как кусок зеленого сыра, а сейчас — иначе. Первое определение сейчас не актуально, а второе тогда. Думаете, если бы нынешнее определение Луны попало в средние века, оно засияло бы там светом абсолютной истины?

    K>>Определением, которое никто не знает — пользоваться в принципе не возможно.

    ГВ>Значит, надо почитать книги, где это определение имеется.

    Т.е. сделать его общепринятым. Спасибо за 25ю итерацию одного и того же объяснения.

    K>>>>Ответте на простой вопрос: как терминология поможет людям говорить об одном и том же, если с этой терминологией почти никто не знаком. Не надо сетовать на несовершенство мира. просто ответте.

    ГВ>>>Прочитают нужные книжки и всё поймут, не надо недооценивать людей.
    K>>Вы сами то понимаете о чем говорите? Т.е. если сделать определение распространенным, то все будет работать нормально.
    ГВ>Не всякое определение стоит делать распространённым. К википедическому это относится в полной мере. Ну, попытайтесь определить токарное дело через "усилия токаря". Много он "натокарит"?

    Думаете, ознакомившись с другим определением он натокарит больше?

    K>>При то, что вы сказали буквально следующее:

    K>>

    K>>Следовать "общепринятым" терминам в противовес правильных — как раз показатель бездумности.

    K>>Бездумным быть не хочется, вот и интересно, что вы имели в виду.
    ГВ>Ровно то, что написал. Но уточню. Избирать общепринятую (некорректную) терминологию в противовес корректной (хотя возможно, что не лишённой недостатков) — признак бездумности действия. Я понятно выражаюсь?

    Дайте критерии корректности определений.

    ГВ>>>Я не пытался сказать, что нечто однозначно и навсегда правильно, хотя склонен считать, что...

    K>>... что истина всегда конкретна? Вы одновременно верите и в то, что дед Мороз есть и в то, что его нет?
    ГВ>Причём тут дед Мороз и моя вера (неверие) в него? Я где-то отрицал возможность или необходимость последовательного уточнения терминологии?

    И что такое истина по Вашему? Предел последовательностей уточняющихся терминологий? Или сама последовательность? Как-то противоречит утверждению о том, что она всегда конкретна. Может стремится к конкретности? Аппроксимируют конкретность? Впрочем, видно, что Вы на верном пути. Работайте в этом направлении и дальше.

    ГВ>>>Ещё раз повторяю набор посылок и моё возражение в схематичной форме:

    ГВ>>>1. Понятию "ООП" даётся субъектное определение А.
    K>>в определении ООП использован термин, для которого существует субъектное определение. Вот так будет вернее.
    ГВ>Возможно, но именно через субъектное определение определяется само ООП.

    Это зависит от определения "парадигмы".

    ГВ>>>2. Это определение принимается как "общепринятое".

    K>>Оно фактически общепринятое. Это свойсто определений википедии by design
    ГВ>Тем хуже для википедии.

    Ну ну.

    ГВ>>>3. В дискуссии определение А явно противопоставляется объектному определению Б на основании п.2

    K>>Нет такой дискуссии. Противопоставлялось общепринятое и эзотерическое и утверждалось то, что предпочесть общепринятое эзотерическому можно толкьо по недомыслию. Причем ничем кроме численности групп употребляющих и неупотребляющих этот термин это утверждение не аргументировалось.
    ГВ>Стоп-стоп-стоп. Давайте не будем отклоняться от темы. Повторяю в сотый раз: я не собираюсь спорить на тему того, какое именно из определений ООП — правильное и предельно точное.

    И слава богу.

    ГВ>Я возражаю против следования за большинством, потому что оно — большинство и презрения меньшинства, потому что оно — меньшинство.


    Разумно. Но это то причем здесь?

    ГВ>В данном случае следование за большинством приводит к принятию заведомо бестолково сформулированного определения.


    Не факт.

    ГВ>Понятно?


    А Вам?

    ГВ>Я не пытаюсь сейчас докопаться до того, что есть "настоящее ООП", "чистое ООП" и так далее. Потому я и выделил именно эти аспекты (объектное-субъектное и "большинство") доводов.


    Давайте докапаемся хотя-бы до того, какое определение можно считать корректным (правильным). И до того, конкретна все-таки истина всегда или нет.

    ГВ>>>Моё возражение. В силу заведомой некорректности определение А нельзя принимать как истинное.

    K>>Утверждение о заведомой некорректности не доказано.
    ГВ>Простите, а как можно определить объект через характеристики субъекта (тем паче, что мы ведём речь о технической деятельности)? Вот уж где эзотерика-то начинается! Йоги и дзенщики нерво медитируют в сторонке.

    Парадигма не техническое определение, а общефилософское, так что все в порядке.

    ГВ>>>В данном случае в п.3 сделано две ошибки: а) применена аргументация коллективом

    K>>Аргументация коллективом была применена как раз для защиты эзотерического определения.
    ГВ>Ой ли? А если перечитать?

    ГВ>Первый шар:
    Автор: Андрей Коростелев
    Дата: 14.06.06

    ГВ>

    Оно не мое, а давно уже дано Кеем:
    ГВ>1. ...


    ГВ>Второй:
    Автор: VladD2
    Дата: 17.06.06

    ГВ>

    http://en.wikipedia.org/wiki/Object-oriented_programming
    ГВ>И не надо путать высказывания каких-то отдельных личностей... с общепринятыми и четко определенными понятиями.

    (Чётким определением и не пахнет — Г.В.)


    ГВ>Третий:
    Автор: Андрей Коростелев
    Дата: 17.06.06

    ГВ>

    То есть ты предпочитаешь адаптированное для масс определение неудобному для тебя оригинальному определению, даному ее создателем.


    ГВ>Далее понеслась телега по просекам.

    ГВ>Так где здесь первый раз прозвучала апелляция к общепринятости?

    Не важно, где первый раз. Когда речь идет о терминологии апелляция к общепринятости полностью справедлива — вот это важно.
    Общепринятость для пригодной к использованию терминологии необходимое требование. Понятно, что не достаточное. но точно необходимое.

    ГВ>>>б) постулируется истинность заведомо неверифицируемого определения.

    K>>Истинность не постулируется. постулируется пригодность для именования. Для именования пригодно все что угодно. Лишь бы только участники обмена информацией были в курсе такого именования. Помните пост про "горшок произвольного доступа"?
    ГВ>Да не пригодно оно для использования! Не-при-год-но. Это — мусор, болтовня тинейджеров (возможно — великовозрастных).

    Поправте. Сделайте все как надо. Спасите мир, стонущий под гнетом не-при-год-ных общепринятых определений.

    ГВ>>>Всё ясно, но пример не в кассу. Здесь нужно противопоставлять именно "взгляд" как свойство субъекта и некое название вещи как пример объектного определения.

    K>>Название вещи есть взгляд и является свойством субъекта. Названия только в такой форме и существуют.
    ГВ>Не-не-не. Не "есть взгляд", а "выражают взгляды". Разница — в отчуждении от субъекта. Сами по себе взгляды остаются при субъектах и никого, по большому счёту не интересуют, взглядов у каждого может быть миллион.

    А названий сколько может быть?

    K>>>>Решит ли данная терминология основную проблему которую она призвана решить — помочь этим шести человекам говорить об одном и том же одними словами?

    K>>>>А вообще в том и дело, что это зависит от контекста. К какой-то внеконтекстной "правильности" не существует.
    ГВ>>>Конечно. Но вполне себе существуют отличия корректного и некорректного описания предмета.
    K>>Что понимается под корректностью описания? Полнота? — она недостижима. Непротиворечивость? — она неверифицируема.
    K>>Что еще?

    ГВ>Как минимум, отсутствие заведомых некорректностей. Далее зависит от контекста. В данном случае было одно заведомо некорректное


    Очень интересно. Заведомо некорректное потому, что некорректное. Заведомо.

    ГВ>и одно корректное и возможно, точное определение.


    Корретное потому, что рядом лежало некорректное? Это такая наведенная корректность?

    ГВ>>>>>Видимо, то, что большинство таки не одни лишь законы физики усвоило. Это хорошо и хорошо весьма.

    K>>>>А с философией, похоже, не все так радужно.
    ГВ>>>Трудно сказать. Можно спорить о точности и непротиворечивости выделения объекта, но уж заметить разницу между субъектом и объектом, ИМХО, вовсе не сложно.
    K>>И что это даст?
    ГВ>Уточнение семантики термина,

    Ага. Где-то на величину второго порядка малости.

    ГВ>вот что может дать спор о точности и непротиворечивости. А отслеживание появления субъектных моментов позволяет отсечь заведомые глупости.


    Бритва Геннадия Васильева. Ага.

    ГВ>>>Верно, верно. Но я не буду называть "среднюю температуру", скажем, "вектором ощущений медперсонала".

    K>>Температура Васи Пупкина это вполне нормальный пучек ощущений для медперсонала. Вы знаете какой-то другой способ восприятия окружающей действительности кроме как через ощущения?
    ГВ>Приборы, мой друг, приборы. (Которых — восемь ) Иногда они куда как более точны, чем ощущения медперсонала.

    — Приборы!
    — Тридцать!
    — Что тридцать?
    — А что приборы?

    А что приборы, Гена? Приборы для медперсонала это тоже, как завещал старина Юм, пучки ощущений.
    А когда небыло приборов, медперсонал ведь тоже температуру тогдашних Васей Пупкиных определял. Точность, понятное дело, была похуже, но это аспект технический и для общефилософской беседы малосущественный.

    ГВ>>>Разницу понимаете?

    K>>А Вы? В чем она заключается?
    ГВ>См. выше. Приборы врут реже, чем ощущения. Хотя у кого — как, но это к делу не относится.

    Термометры не врут. Это было бы возможно только в том случае, если бы существовала некая "истинная температура".

    K>>>>Начиная с какого знака после запятой это будет точный ответ?

    ГВ>>>Это зависит от требований медицины. Безусловно, требования эти могут в перспективе поменяться и измерения будут проводиться, например, с точностью до 0,0001 градуса в двадцати точках на протяжении суток. Тогда термин "средняя температура" обретёт несколько иной смысл.
    K>>Я что-то не пойму. Вы утвеждаете, что конкретность — это вопрос договоренности?
    ГВ>Не без того. Вопрос в том, какой характер носит эта договорённость. Невозможно договориться "смотреть" на вещи определённым образом.

    Но почему? Так чаще всего и бывает. Договариваемся и смотрим. Тот, кто о договоре не знает и не знает что он должен видеть — тот договоренного не увидит.

    K>>Т.е. если истина всегда конкретна, то это означает, что истина всегда такая, как договоримся?

    ГВ>Что-то в этом роде,

    Уже лучше. Вы подаете надежды, определенно! Но как же все-таки быть со словами о том, что "истина всегда конкретна"?

    ГВ>но не надо путать договорённость о, например, достаточной точности термометра и, кхм, "схожие взгляды на жизнь". В первом случае мы можем сделать вывод о вполне конкретном термометре, что он достаточно точен (пригоден для использования) для нашей деятельности, во втором...


    ... вывод о том, что человек с определенными взглядами на жизнь пригоден для использования. В чем принципиальная разница?

    ГВ>>>Правда, я не уверен, что в этом соглашении принимало участие некое "общественное большинство", за исключением большинства из каких-то научных организаций.

    K>>Я уже писал, что способ установления общепринятости значения для дискуссии не имеет. Сколько еще про это написать?
    ГВ>Кстати — имеет. Кто пишет в википедию — никому не известно. Это дополнительный камень в огород википедии.

    Ну да. А БСЭ пишет доктор Мегамозг Мегамозгович Мегамозглый. Это здорово подкрепляет БСЭ авторитетом.

    K>>Естественно, что этот вопрос решался не съездом КПСС, а в достаточно узких научных кругах. Тем не менее это не мешает быть общепринятым.

    ГВ>Правильно. "Вопрос решили" в узких научных кругах, а большинству навязали волю этих самых научных кругов. И очень правильно поступили.

    Определеня ООП тоже, вобщем-то стихийно не формируются. И что дальше?

    ГВ>>>И заметьте, эталон тепературы сугубо объектен.

    K>>Не замечу. То, что мы можем дать объектное определение тройной точке воды, и то что кто-то договорился считать тройную точку воды "эталоном температуры" вовсе не означает, что мы можем дать объектное определение эталону температуры. Понятно?

    ГВ>Что????? Где в определении эталона упоминаются "взгляды" исследователей на процесс измерения?


    Ну, непосредственно и в определении ООП нет упоминаний о взглядах. Но вот пройдя по цепочке терминов успользованных для определения эталона температуры мы непременно наткнемся на те, которые как раз через взгляды и определяются.

    K>>Тройная точка существует независимо от культурного контекста, от нас, от наших представлений о ней. "Эталон температуры" вне наших представлений не существует. отношение между тройной точкой и "эталоном температуры" — асимметрично.

    ГВ>Это понятно. Но где здесь апелляция к субъекту? Возьми эталонные приборы и получишь точное (надёжно повторяемое разными исследователями) значение температуры для того или иного процесса. Где здесь мнение субъекта об эталонности? Есть вполне объектная (и объективная) привязка одних измерительных шкал к другим.

    Проблема в самих шкалах. И в самой температуре. Температура настолько же реальна, насколько реален средний рост или средний вес. Ее надо выдумать. А перед тем выдумать такое понятие как "среднее". Есть движущиеся частицы. Температуры нет — это выдумка, определение, унаследованное из устаревшей, потерявшей актуальность теории теплорода, получившее новую жизнь вместе с новой статистической трактовкой.

    Ученый повторит опыты, но если он не в курсе, что существует такое понятие как "температура", то сможет ли он, проведя все эти опыты и проанализировав результаты ввести такое понятие? Да, сможет. Но вполне может этого и не сделать. Температура это не взгляд, конечно. Но вот термодинамика — это уже взгляд. Понятно?

    K>>>>Думаете, бывает температура, которая не "средняя по"?

    ГВ>>>В сущности — согласен.
    K>>Почему же тогда по поводу конкретной истины возражаете?
    ГВ>Какой именно?

    Конкретной истины вообще. Ее существования.

    Некоторые промежуточные итоги:

    В принципе, в вопросе конкретности истины мы кажется уже близимся к развязке.

    С необходимостью общепринятости определений не все так ясно.

    Повторю: я по этому вопросу сказал только то, что необщепринятая терминология не работает.
    Вы этот тезис не опровергли. Вместо этого перескакиваете на Википедию.

    Что касается правильных(корректных) определений то тут все плохо.
    Никаких критериев правильности. Разве только сомнительные критерии некоей "заведомой некорректности".
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re[27]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 18.09.06 12:35
    Оценка:
    Здравствуйте, Klapaucius, Вы писали:

    K>Для немерле или там скалы имеет смысл говорить не о размере метода, а о размере вложенной функции или конкретного паттерна в блоке match. Ограничивать размер метода в таких языках 7ю строками, требование того же уровня адекватности, что и ограничивать 7ю строками размер класса в яве.


    Это, как бы, понятно. Непонятно только почему был выбран именно этот стиль — огромная "портянка" кода.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[21]: Насколько важен синтаксис языка?
    От: Vermicious Knid  
    Дата: 18.09.06 12:50
    Оценка:
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>Что касается "выражений посложнее": в Smalltalk средний размер метода — 6-7 строк. Включая определение переменных и прочее. Где тут можно сделать "блок посложнее"?

    Погонял я этот код на Dolphin Smalltalk. Во-первых мне кажется он слегка грешит,частенько выдает нулевые длины для каких-то методов. И 7 строк в среднем еще ни о чем не говорят, там вполне достаточно гораздо более длинных методов, вот в них и будут блоки посложнее. Вот например в Dolphin Smalltalk можно в достаточном количестве откопать таких вот методов:
    queryCommand: aCommandQuery
        "Private - Enters details about a potential command for the receiver into 
        the <CommandQuery>, query"
    
        | selector |
        selector := aCommandQuery commandSymbol.
        #browseIt == selector 
            ifTrue: 
                [selector := self browseItCommand.
                selector isNil 
                    ifTrue: 
                        [aCommandQuery isEnabled: false.
                        ^true]].
        #clearSelection == selector 
            ifTrue: 
                [selector := self deleteItCommand.
                selector isNil 
                    ifTrue: 
                        [aCommandQuery isEnabled: false.
                        ^true]].
        #aboutPackage == selector 
            ifTrue: 
                [aCommandQuery 
                    isEnabled: (self singlePackage ifNil: [false] ifNotNil: [:package | package canShowAbout]).
                ^true].
        (#(#browseSources #browsePackageSources) identityIncludes: selector) 
            ifTrue: 
                [aCommandQuery isEnabled: self hasPackages.
                ^true].
        (#(#checkOut #checkIn) identityIncludes: selector) 
            ifTrue: 
                [aCommandQuery isEnabled: ((self respondsTo: selector) and: [self hasPackages]).
                ^true].
        #deploy == selector 
            ifTrue: 
                [aCommandQuery isEnabled: (self hasSinglePackage and: [self respondsTo: selector]).
                ^true].
        #setAsDefaultPackage == selector 
            ifTrue: 
                [self singlePackage 
                    ifNil: [aCommandQuery isEnabled: false]
                    ifNotNil: 
                        [:package | 
                        aCommandQuery
                            isEnabled: true;
                            isChecked: package isDefaultPackage].
                ^true].
        (#(#addClass #addGlobal #inspectPackage #savePackageAs #browsePackage #addMenu) 
            identityIncludes: selector) 
                ifTrue: 
                    [aCommandQuery isEnabled: self hasSinglePackage.
                    ^true].
        selector == #saveBinaryPackage 
            ifTrue: 
                [aCommandQuery 
                    isEnabled: ((self respondsTo: #saveBinaryPackage) and: [self hasSinglePackage]).
                ^true].
        (#(#savePackages #removePackage #sourceControlMenu #inspectIt) identityIncludes: selector) 
            ifTrue: 
                [aCommandQuery isEnabled: self hasPackages.
                ^true].
        (#(#savePackageChanges #resetChangeFlags) identityIncludes: selector) 
            ifTrue: 
                [aCommandQuery isEnabled: self hasChangedPackages.
                ^true].
        (#(#checkOutChanges) identityIncludes: selector) 
            ifTrue: 
                [aCommandQuery isEnabled: (self hasChangedPackages and: [self respondsTo: selector]).
                ^true].
        (#(#browseFolder) identityIncludes: selector) 
            ifTrue: 
                [aCommandQuery isEnabled: (self selectedFolder 
                            ifNil: [false]
                            ifNotNil: [:folder | File isDirectory: folder]).
                ^true].
        #synchronizeFilter == selector 
            ifTrue: 
                [| packages |
                packages := self packages.
                aCommandQuery isEnabled: (packages notEmpty 
                            and: [(self commonFolder: packages) ~= filterPresenter selectionOrNil]).
                ^true].
        selector == #toggleUsingPAX 
            ifTrue: 
                [| syspkg first enable usingPax |
                syspkg := self packageManager systemPackage.
                enable := false.
                first := true.
                usingPax := false.
                self packages do: 
                        [:each | 
                        each == syspkg ifTrue: [enable := false].
                        first 
                            ifTrue: 
                                [enable := true.
                                usingPax := each isUsingPAX.
                                first := false]
                            ifFalse: [each isUsingPAX ~~ usingPax ifTrue: [enable := false]]].
                aCommandQuery
                    isEnabled: enable;
                    isChecked: usingPax.
                ^true].
        (self systemModel canRefactor and: [self queryRefactoringCommand: aCommandQuery]) 
            ifTrue: [^true].
        ^super queryCommand: aCommandQuery

    Не правда ли чудный код?
    Re[25]: Насколько важен синтаксис языка?
    От: Vermicious Knid  
    Дата: 18.09.06 12:54
    Оценка: 7 (1)
    Здравствуйте, Eugene Beschastnov, Вы писали:

    EB>Кстати, интересно — какое среднее количество строк в методе в стандартной большой программе на Nemerle? Например, компилятор Nemerle на самом Nemerle написан (я не в курсе)?

    Да, компилятор Nemerle написан на Nemerle. Правда я бы не сказал, что это "стандартная большая программа на Nemerle". Что значит вообще "стандартная программа"? Скажем если на Nemerle писать в синтаксисе на отступах вместо фигурных скобок, то количество строк само собой сократится раза в полтора. Чем такая программа будет нестандартна? По-моему среднее количество строк в методе мало зависит от языка, а зависит скорее от программистов, стиля, соглашений, архитектуры.

    Разработчики Nemerle пришли из OCaml среды, а там не считается зазорным писать объемные функции. И вообще считается, что OCaml это один из лучших языков для написания компиляторов. Следовательно для таких задач небольшое "количество строк в методе" не является преимуществом при наличии паттерн-мэтчинга. Смоллтолкеры могут с этим сколько угодно не соглашаться, оно и понятно — им так считать религия не позволяет, но это реалии жизни.

    И если компилятор Nemerle написан в духе OCaml, то вот например проект интеграции с VS 2005 уже делается людьми из среды C#/.NET. И это заметно по исходникам — никаких больших методов при беглом осмотре я не обнаружил.

    EB>Вот в нём, например. И заодно интересно было бы посмотреть на программу, выполняющую этот подсчёт (тоже на Nemerle, разумеется).

    Ради интереса написал я такую "программу". Вернее не совсем программу, а макрос, что в общем-то сути не меняет. В компилируемые исходники нужно добавить атрибут уровня сборки CountLines, и добавить reference на скомпилированную сборку с этим макросом, результаты будут выведены в консоль во время компиляции.

    #pragma indent
    using Nemerle
    using Nemerle.Compiler
    using Nemerle.Macros
    using System.Console
    
    [MacroUsage (MacroPhase.WithTypedMembers, MacroTargets.Assembly)]\
    macro CountLines()
        mutable lineCount = 0
        mutable numberOfMethods = 0
    
        def flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public\
                    | BindingFlags.NonPublic | BindingFlags.DeclaredOnly
    
        def count(t)
            foreach (method is MethodBuilder in t.GetMembers(flags))
                unless (method.HasAbstractBody)
                    lineCount += method.Location.EndLine - method.Location.Line + 1
                    numberOfMethods++
    
        ImplicitCTX().Manager.Hierarchy.Iter(count)
        WriteLine($"Total line count in methods: $lineCount")
        WriteLine($"Number of methods: $numberOfMethods")
        WriteLine($"Average method line count: $((lineCount :> double) / numberOfMethods)")

    Результаты полученные при компиляции компилятора:

    Total line count in methods: 35633
    Number of methods: 2420
    Average method line count: 14.7243801652893

    Стандартной библиотеки:

    Total line count in methods: 3898
    Number of methods : 651
    Average method line count: 5.98771121351766

    В среднем для исходников компилятора и стандартной библиотеки(а они тесно связаны, учитывая что компилятор написан на Nemerle):
    ~12.87 ((35633 + 3898) / (2420 + 651)).

    Эта статистика правда ничего не говорит о том, что максимальное количестов строк в методе — 986, а количество методов более чем в 100 строк около пятидесяти. Просто большое количество очень маленьких методов делают среднее число вполне небольшим. Тоже самое со Смолтолком, где-нибудь вполне мог затесаться метод тысячник, как и достаточно большое количество далеко не маленьких методов.
    Re[25]: Не нужно спекуляций
    От: Lazy Cjow Rhrr Россия lj://_lcr_
    Дата: 18.09.06 13:17
    Оценка:
    eao197,

    E>Так что я прошу, не смотря на очень большой налет юмористичности, не развивать эту тему в сторону соревнования в остроумии. Как бы смешно данная фраза не звучала, но она очень емкая и очень удачная. Именно это в ней ценно.


    Уфф, Женя, со мной всё сложнее...

    Я долго смотрел на эту фразу, но она для меня по-прежнему звучит как тавтология "если А, то А". Сперва было забавно, сейчас уже конечно нет, но от этого меньшей тавтологией не становится, ибо для меня "программа работает" и "программа не содержит ошибок" суть одно и то же, что конечно, как следует из прочитанного выше
    Автор: eao197
    Дата: 18.09.06
    небольшого наблюдения о зависимости иллюзий от опыта, в твоём случае совсем не так. Понятно, что я не прочувствовал вышеозначенную тонкую грань... Чтож, у меня, я надеюсь, ещё куча времени подумать

    Всё, закругляюсь. Удачи.
    quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
    Re[22]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 18.09.06 14:31
    Оценка:
    Здравствуйте, Vermicious Knid, Вы писали:

    VK>Погонял я этот код на Dolphin Smalltalk. Во-первых мне кажется он слегка грешит,частенько выдает нулевые длины для каких-то методов.


    Работает правильно. Просто, насколько я знаю, в общедоступной версии Дольфина часть методов закодированы и их сырцы недоступны. Такие методы и защитываются с нулевым размером. Отсеивание таких методов из статистики показывает, что средний размер увеличился с 6.486 до 6.497.

    VK> И 7 строк в среднем еще ни о чем не говорят, там вполне достаточно гораздо более длинных методов, вот в них и будут блоки посложнее.


    Нужно строить гистограмму. Я посчитал по Долфину:

    Строки, Кол-во методов, вес %
    1-7 , 20418, 72.1
    8-11 , 5024, 17.7
    12-20 , 2213, 7.8
    21-50 , 618, 2.2
    51-2770, 58, 0.2

    Однако, тут есть одна проблема. В эти методы "зашиты" множество ресурсов. Например, метод с 2770 строк выглядит так:
    eyeJpgBytes
        ^ByteArray 
            fromBase64String: 'и тут понеслись 3 тысячи строк'

    Как их отфильтровать я сходу сказать не могу.

    VK> Вот например в Dolphin Smalltalk можно в достаточном количестве откопать таких вот методов:


    Ужос. На лицо ручная диспетчеризация сообщений. Я бы сделал это при помощи враппера + perform: либо на метаданных (атрибуты, аннотации, прагмы или как оно там называется) при наличии их. В Tweak сделано на аннотациях.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[28]: Насколько важен синтаксис языка?
    От: WolfHound  
    Дата: 18.09.06 17:17
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Это, как бы, понятно. Непонятно только почему был выбран именно этот стиль — огромная "портянка" кода.

    По тому что объектная декомпозиция приведет к еще большим портянком кода (класс с методами).
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[23]: Мужик сказал, мужик ... :) (~60Kb)
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.09.06 17:30
    Оценка: +2 :))) :)
    Здравствуйте, eao197, Вы писали:

    E>


    Копирайт виден плохо.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[2]: Контрольную устроить, что-ли?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 18.09.06 18:33
    Оценка:
    Здравствуйте, Klapaucius, Вы писали:

    ГВ>>Если эти две статьи в одном источнике — то да, мрак и жуть. Поскольку недоверие, вызванное толкованием закономерно вызывает недоверие и к самой исходной статье.

    K>У Википедии нет ответственного редактора. Считать ее одним источником можно с тем же успехом, что и считать одним источником сумму знаний человечества.

    Сумму знаний источником считать можно. А сумму беллетристики...

    ГВ>>>>Взгляд — это действие субъекта ("программист глядит на программу"). Это не может быть частью определения, претендующего на большее, чем банальный трёп.

    K>>>С какой стати? Для вас субъектность какое-то непонятное зло. Чуть что сразу — анафема! Вы бы хоть разъяснили чем это плохо. Только покороче, если можно.
    K>>>А вместо этого все доказываете субъектное... программист глядит... в чем проблема-то?
    ГВ>>Контрольная работа: передайте мне свой взгляд на это сообщение. Верифицируйте правильность передачи взгляда. Ну или просто опишите сам метод передачи взгляда.
    K>Верифицировать нельзя практически ничего. Даже Ваше любимое 2*2, насколько я помню, пролетает. И что дальше?

    Значит, кол авансом был по делу.

    ГВ>>>>Да нет, ничего не может помешать. Каждый волен сходить с ума по-своему.

    K>>>Вы не отклоняйтесь в область психиатрии. Вы обясните где еще может быть парадигма, если не в голове программиста, который смотрит программу.
    ГВ>>Понимаете ли, нельзя путать "парадигму" как агрегатное (объектное!) понятие и тот эффект, который возникает в голове конкретного наблюдателя при следовании ей.
    K>А если парадигма не существует в какой бы то ни было другой форме, кроме как возникая в голове наблюдателей при следовании ей?

    Тогда это ведомство — психиатрическое. Что и требовалось доказать.

    K>>>Если вы так волнуетесь по этому поводу, дайте определение термина "определение". Имеют ли определения физический смысл? Или это может только взгляд, существующий в голове?

    ГВ>>На бумаге, во всяком случае, я видел множество определений самых разнообразных вещей. Ergo, это не только тараканы в голове.
    K>(бъется головой о столешницу). Уффф... Испачканая бумага существует в основном для того, чтобы не подзабыть своих тараканов.

    А...

    K>Плюшевый медведь с Антареса, случись ему увидеть эту бумажку с определением воспримет определение?

    K>Нет. Потому, что он вне культурного контекста? Понятно?

    Я это всё прекрасно понимаю, не утруждайтесь. Вы можете сосредоточиться на тех простых вещах, о которых я писал? Мне не интересно нахождение самого лучшего определения, мне вполне понятно, что лексика и семантика терминов этого определения должны быть понятны читателям, для меня также не составляет тайны, что чем больше людей трактуют выражение одинаково, тем проще общаться. И почему-то для меня совершенно не стало откровением рассуждение про культурный контекст. По большому счёту единственное, против чего я возражаю — так это против "подхватывания" распространённой трактовки (определения) без его критической оценки. Ну и далее всё то, что я писал об отношениях большиства и меньшинства.

    Хватит уже обсуждать мифических мишек с Антареса и тигрокрысов.

    K>Если мы напишем на бумаге "тигрокрыс" станут ли тигрокрысы существовать в реальном мире? Опять таки нет.

    K>И кто из нас двоечник?

    Мифический мир тоже может "существовать". Это не отменяет требований корректности по отношению к нему.

    ГВ>>>>Определение ООП включает в себя "взгляд" в составе описания (через "парадигму"). Ergo, это определение некорректно по факту, его даже рассматривать нельзя в качестве определения.

    K>>>Некорректным определением пользоваться можно. Если его знают.
    ГВ>>А что оно будет определять, будучи заведомо некорректным? Всё, что захочет очередной оратор? Хорошенькое же определение!
    K>А много есть корректных определений? Вы о какой корректности все время толкуете?

    Корректность — это, как минимум, отсутствие заведомых некорректностей. Не надо сводить на то, много их или мало. Понимаете, к примеру, некая длинная математическая выкладка может приводить к неким результатам. Но если в ходе этих выкладок используется завуалированное деление на нуль (зависит от контекста, разумеется, иногда деление на нуль может быть нужно), то вся выкладка улетает псу под хвост с точки зрения практической её значимости (софистическая и психоделическая ценнность — разговор отдельный). Даже если она изложена связно и окружающие с ней типа как согласились. Таким образом можно не вдаваясь в глубины мысли автора выкладки смахнуть её всю как заведомо некорректную. То же самое и в случае субъектных определений: совершенно не важно, что именно определяется и насколько точны все слова данного текста. Если им собираются пользоваться, как источником определения, то не стоит удивляться, что кто-то ушлый ткнёт пальцем в голого короля и пошлёт на хрен всю камарилью. Король-то и в самом деле голый.

    K>Вы можете задать некое исчисление определений, доказать его непротиворечивость, а потом доказывать с помощью этого исчисления корректность определений?


    Исчисление здесь ни к чему. Вполне достаточно банального логического построения. Элементарного, если не зацикливаться на эскапистской "неопределимости всея". Речь идёт о практической применимости терминов. Как можно практически применить "взгляд" — я не понимаю, а Вы от ответа уклонились.

    K>Корректных определений не бывает, бывают актуальные.


    Глупости не говорите, ладно? Нащли, что противопоставлять!

    K>Ну определяли в средние века луну, как кусок зеленого сыра, а сейчас — иначе. Первое определение сейчас не актуально, а второе тогда. Думаете, если бы нынешнее определение Луны попало в средние века, оно засияло бы там светом абсолютной истины?


    Не знаю.

    K>>>Определением, которое никто не знает — пользоваться в принципе не возможно.

    ГВ>>Значит, надо почитать книги, где это определение имеется.
    K>Т.е. сделать его общепринятым. Спасибо за 25ю итерацию одного и того же объяснения.

    Да, сделать его общепринятым. Вопрос в том, что именно делать, а ещё точнее — что именно не делать общепринятым.

    K>>>Вы сами то понимаете о чем говорите? Т.е. если сделать определение распространенным, то все будет работать нормально.

    ГВ>>Не всякое определение стоит делать распространённым. К википедическому это относится в полной мере. Ну, попытайтесь определить токарное дело через "усилия токаря". Много он "натокарит"?
    K>Думаете, ознакомившись с другим определением он натокарит больше?

    Думаю, что если бы станок определялся как "взгляд на груду металла", то и металла никакого бы не было. А если бы руководство по технике безопасности было сформулировано в терминах "взгляда на шпиндель из-под станины" и "неопределимости понятия 'частота вращения'", то и токари бы не выжили.

    K>>>При то, что вы сказали буквально следующее:

    K>>>

    K>>>Следовать "общепринятым" терминам в противовес правильных — как раз показатель бездумности.

    K>>>Бездумным быть не хочется, вот и интересно, что вы имели в виду.
    ГВ>>Ровно то, что написал. Но уточню. Избирать общепринятую (некорректную) терминологию в противовес корректной (хотя возможно, что не лишённой недостатков) — признак бездумности действия. Я понятно выражаюсь?
    K>Дайте критерии корректности определений.

    Я это уже 25 раз объяснял. Ну сколько можно? Я могу дать критерий отсечения некорректных определений. Если Вы считаете, что можно руководствоваться "взглядом" или выдавать за чёткое определение текст, который сам содержит слова "для этого нет точного определения", то я уж и не знаю, что тут добавить.

    ГВ>>>>Я не пытался сказать, что нечто однозначно и навсегда правильно, хотя склонен считать, что...

    K>>>... что истина всегда конкретна? Вы одновременно верите и в то, что дед Мороз есть и в то, что его нет?
    ГВ>>Причём тут дед Мороз и моя вера (неверие) в него? Я где-то отрицал возможность или необходимость последовательного уточнения терминологии?
    K>И что такое истина по Вашему?

    В каждом конкретном случае она своя. Но неизменно — лучезарная и сияющая.

    [skip варианты ответов, не подходят]

    ГВ>>>>Ещё раз повторяю набор посылок и моё возражение в схематичной форме:

    ГВ>>>>1. Понятию "ООП" даётся субъектное определение А.
    K>>>в определении ООП использован термин, для которого существует субъектное определение. Вот так будет вернее.
    ГВ>>Возможно, но именно через субъектное определение определяется само ООП.
    K>Это зависит от определения "парадигмы".

    В частности. И в той же частности оно своей кривизной валит построенное на нём "определение".

    ГВ>>>>2. Это определение принимается как "общепринятое".

    K>>>Оно фактически общепринятое. Это свойсто определений википедии by design
    ГВ>>Тем хуже для википедии.
    K>Ну ну.

    Чего "ну-ну"?! Беллетристика как есть. Я не спорю, почитать иногда интересно.

    ГВ>>Я возражаю против следования за большинством, потому что оно — большинство и презрения меньшинства, потому что оно — меньшинство.

    K>Разумно. Но это то причем здесь?

    Смотрим самое начало дискуссии.

    ГВ>>В данном случае следование за большинством приводит к принятию заведомо бестолково сформулированного определения.

    K>Не факт.

    Мда.

    ГВ>>Я не пытаюсь сейчас докопаться до того, что есть "настоящее ООП", "чистое ООП" и так далее. Потому я и выделил именно эти аспекты (объектное-субъектное и "большинство") доводов.

    K>Давайте докапаемся хотя-бы до того, какое определение можно считать корректным (правильным). И до того, конкретна все-таки истина всегда или нет.

    Корректное != правильное. Само по себе определение может быть вполне корректным, но притом не точно определять сам предмет и т.п.

    ГВ>>>>Моё возражение. В силу заведомой некорректности определение А нельзя принимать как истинное.

    K>>>Утверждение о заведомой некорректности не доказано.
    ГВ>>Простите, а как можно определить объект через характеристики субъекта (тем паче, что мы ведём речь о технической деятельности)? Вот уж где эзотерика-то начинается! Йоги и дзенщики нерво медитируют в сторонке.
    K>Парадигма не техническое определение, а общефилософское, так что все в порядке.

    Ага, ну я же говорю — эзотерика чистой воды.

    ГВ>>>>В данном случае в п.3 сделано две ошибки: а) применена аргументация коллективом

    K>>>Аргументация коллективом была применена как раз для защиты эзотерического определения.
    ГВ>>Ой ли? А если перечитать?
    [...]
    ГВ>>Так где здесь первый раз прозвучала апелляция к общепринятости?

    K>Не важно, где первый раз. Когда речь идет о терминологии апелляция к общепринятости полностью справедлива — вот это важно.

    K>Общепринятость для пригодной к использованию терминологии необходимое требование. Понятно, что не достаточное. но точно необходимое.

    Не ставьте коня поперед телеги, ладно? Сначала терминология должна быть корректно определена в своём контексте. А потом уже имеет смысл рассуждать о её приемлемости и общепринятости. Мало ли, что взбредёт в голову среднестатистическому большинству?

    ГВ>>Да не пригодно оно для использования! Не-при-год-но. Это — мусор, болтовня тинейджеров (возможно — великовозрастных).

    K>Поправте. Сделайте все как надо. Спасите мир, стонущий под гнетом не-при-год-ных общепринятых определений.

    Не хватает цитаты из Галича.

    ГВ>>>>Всё ясно, но пример не в кассу. Здесь нужно противопоставлять именно "взгляд" как свойство субъекта и некое название вещи как пример объектного определения.

    K>>>Название вещи есть взгляд и является свойством субъекта. Названия только в такой форме и существуют.
    ГВ>>Не-не-не. Не "есть взгляд", а "выражают взгляды". Разница — в отчуждении от субъекта. Сами по себе взгляды остаются при субъектах и никого, по большому счёту не интересуют, взглядов у каждого может быть миллион.
    K>А названий сколько может быть?

    Их тоже может быть много.

    K>>>Что понимается под корректностью описания? Полнота? — она недостижима. Непротиворечивость? — она неверифицируема.

    K>>>Что еще?
    ГВ>>Как минимум, отсутствие заведомых некорректностей. Далее зависит от контекста. В данном случае было одно заведомо некорректное
    K>Очень интересно. Заведомо некорректное потому, что некорректное. Заведомо.

    Я уже отписывал не раз, почему именно.

    ГВ>>и одно корректное и возможно, точное определение.

    K>Корретное потому, что рядом лежало некорректное? Это такая наведенная корректность?

    Нет, это характеристика самого по себе определения. Не зависимо от точности и полноты оного. Кей пишет об объектах (не путать с объектами из ООП). Википедия ссылается на субъект.

    ГВ>>>>>>Видимо, то, что большинство таки не одни лишь законы физики усвоило. Это хорошо и хорошо весьма.

    K>>>>>А с философией, похоже, не все так радужно.
    ГВ>>>>Трудно сказать. Можно спорить о точности и непротиворечивости выделения объекта, но уж заметить разницу между субъектом и объектом, ИМХО, вовсе не сложно.
    K>>>И что это даст?
    ГВ>>Уточнение семантики термина,
    K>Ага. Где-то на величину второго порядка малости.

    Птичка по зёрнышку клюёт...

    ГВ>>вот что может дать спор о точности и непротиворечивости. А отслеживание появления субъектных моментов позволяет отсечь заведомые глупости.

    K>Бритва Геннадия Васильева. Ага.

    Вы мне льстите.

    ГВ>>>>Верно, верно. Но я не буду называть "среднюю температуру", скажем, "вектором ощущений медперсонала".

    K>>>Температура Васи Пупкина это вполне нормальный пучек ощущений для медперсонала. Вы знаете какой-то другой способ восприятия окружающей действительности кроме как через ощущения?
    ГВ>>Приборы, мой друг, приборы. (Которых — восемь ) Иногда они куда как более точны, чем ощущения медперсонала.

    K>- Приборы!

    K>- Тридцать!
    K>- Что тридцать?
    K>- А что приборы?

    K>А что приборы, Гена? Приборы для медперсонала это тоже, как завещал старина Юм, пучки ощущений.


    Причём тут Юм? Для него (и его науки) объектом является психика людей. Интересно, много ли у него указаний на важность взгляда самого психиатра?

    K>А когда небыло приборов, медперсонал ведь тоже температуру тогдашних Васей Пупкиных определял. Точность, понятное дело, была похуже, но это аспект технический и для общефилософской беседы малосущественный.


    Отнюдь. Это как раз пример последовательного уточнения понятий (терминов). От "холодный-тёплый-горячий-в жару" переходим к уточнённой градации в градусах Цельсия (Фаренгейта, Кельвина).

    ГВ>>>>Разницу понимаете?

    K>>>А Вы? В чем она заключается?
    ГВ>>См. выше. Приборы врут реже, чем ощущения. Хотя у кого — как, но это к делу не относится.
    K>Термометры не врут. Это было бы возможно только в том случае, если бы существовала некая "истинная температура".

    Эталоны и всю метрологиюю отправляем лесом? Моя линейка самая правильная, потому что на ней написано: "1 метр". Ну и что, что она в нагрудном кармане умещается? Вот такой у меня карман... Нет, вот такая у меня грудь!

    K>>>Я что-то не пойму. Вы утвеждаете, что конкретность — это вопрос договоренности?

    ГВ>>Не без того. Вопрос в том, какой характер носит эта договорённость. Невозможно договориться "смотреть" на вещи определённым образом.
    K>Но почему? Так чаще всего и бывает. Договариваемся и смотрим. Тот, кто о договоре не знает и не знает что он должен видеть — тот договоренного не увидит.

    Главный вопрос тут "Куда смотрим?", а не "Откуда?" Вот смотрите, мы сейчас если начнём определять, что такое "взгляд", то уйдём в такие дебри, что википедия покажется детскими шалостями.

    K>>>Т.е. если истина всегда конкретна, то это означает, что истина всегда такая, как договоримся?

    ГВ>>Что-то в этом роде,
    K>Уже лучше. Вы подаете надежды, определенно! Но как же все-таки быть со словами о том, что "истина всегда конкретна"?

    Да как есть. Истина — суть характеристика ответа на вопрос о чём-то. В отвязке от вопроса-ответа — метафизическая абстракция. Или одно из понятий булевой алгебры.

    ГВ>>но не надо путать договорённость о, например, достаточной точности термометра и, кхм, "схожие взгляды на жизнь". В первом случае мы можем сделать вывод о вполне конкретном термометре, что он достаточно точен (пригоден для использования) для нашей деятельности, во втором...

    K>... вывод о том, что человек с определенными взглядами на жизнь пригоден для использования. В чем принципиальная разница?

    В неверифицируемости оных взглядов в строгом смысле этого слова. На бытовом уровне — хоть груздём называйте.

    ГВ>>>>Правда, я не уверен, что в этом соглашении принимало участие некое "общественное большинство", за исключением большинства из каких-то научных организаций.

    K>>>Я уже писал, что способ установления общепринятости значения для дискуссии не имеет. Сколько еще про это написать?
    ГВ>>Кстати — имеет. Кто пишет в википедию — никому не известно. Это дополнительный камень в огород википедии.
    K>Ну да. А БСЭ пишет доктор Мегамозг Мегамозгович Мегамозглый. Это здорово подкрепляет БСЭ авторитетом.

    БСЭ авторитетом подкрепляла АН СССР, коль мне не изменяет память.

    K>>>Естественно, что этот вопрос решался не съездом КПСС, а в достаточно узких научных кругах. Тем не менее это не мешает быть общепринятым.

    ГВ>>Правильно. "Вопрос решили" в узких научных кругах, а большинству навязали волю этих самых научных кругов. И очень правильно поступили.
    K>Определеня ООП тоже, вобщем-то стихийно не формируются. И что дальше?

    В общем-то — да. В данном конкретном случае — уж лучше бы стихийно сформировалось.

    ГВ>>>>И заметьте, эталон тепературы сугубо объектен.

    K>>>Не замечу. То, что мы можем дать объектное определение тройной точке воды, и то что кто-то договорился считать тройную точку воды "эталоном температуры" вовсе не означает, что мы можем дать объектное определение эталону температуры. Понятно?
    ГВ>>Что????? Где в определении эталона упоминаются "взгляды" исследователей на процесс измерения?
    K>Ну, непосредственно и в определении ООП нет упоминаний о взглядах. Но вот пройдя по цепочке терминов успользованных для определения эталона температуры мы непременно наткнемся на те, которые как раз через взгляды и определяются.

    Докажете?

    K>>>Тройная точка существует независимо от культурного контекста, от нас, от наших представлений о ней. "Эталон температуры" вне наших представлений не существует. отношение между тройной точкой и "эталоном температуры" — асимметрично.

    ГВ>>Это понятно. Но где здесь апелляция к субъекту? Возьми эталонные приборы и получишь точное (надёжно повторяемое разными исследователями) значение температуры для того или иного процесса. Где здесь мнение субъекта об эталонности? Есть вполне объектная (и объективная) привязка одних измерительных шкал к другим.

    K>Проблема в самих шкалах. И в самой температуре. Температура настолько же реальна, насколько реален средний рост или средний вес. Ее надо выдумать. А перед тем выдумать такое понятие как "среднее". Есть движущиеся частицы. Температуры нет — это выдумка, определение, унаследованное из устаревшей, потерявшей актуальность теории теплорода, получившее новую жизнь вместе с новой статистической трактовкой.


    Почти согласен.

    K>Ученый повторит опыты, но если он не в курсе, что существует такое понятие как "температура", то сможет ли он, проведя все эти опыты и проанализировав результаты ввести такое понятие? Да, сможет. Но вполне может этого и не сделать. Температура это не взгляд, конечно. Но вот термодинамика — это уже взгляд. Понятно?


    Точно "взгляд"? Или, может быть "мнение" или "парадигма"? Или просто "наука"?

    Между прочим — блестящий пример дачи сугубо объектного определения. Так что же Вы мне пытаетесь доказать? Что существует ещё одна, необычная трактовка термина "взгляд"?

    K>>>>>Думаете, бывает температура, которая не "средняя по"?

    ГВ>>>>В сущности — согласен.
    K>>>Почему же тогда по поводу конкретной истины возражаете?
    ГВ>>Какой именно?
    K>Конкретной истины вообще. Ее существования.
    Я??? Где???

    K>Некоторые промежуточные итоги:


    K>В принципе, в вопросе конкретности истины мы кажется уже близимся к развязке.


    K>С необходимостью общепринятости определений не все так ясно.


    K>Повторю: я по этому вопросу сказал только то, что необщепринятая терминология не работает.

    K>Вы этот тезис не опровергли. Вместо этого перескакиваете на Википедию.

    Так я только с размахиванием википедией и спорю по большому счёту, если Вы не заметили.

    K>Что касается правильных(корректных) определений то тут все плохо.

    K>Никаких критериев правильности. Разве только сомнительные критерии некоей "заведомой некорректности".

    Ну, сомнительные, так сомневайтесь.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[35]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.09.06 23:10
    Оценка: +1
    Здравствуйте, thesz, Вы писали:

    FR>>Да я согласен в общем. Просто по этому определению и руби и питон тоже функциональные языки.


    T>И Си.


    T>Поэтому — это бессмысленное определение.


    Можно пример С программы в функциональном стиле, чтобы оценить "удобно и продуктивно ли писать на С в функцональном стиле"?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[26]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.09.06 23:10
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    EB>>Кстати, интересно — какое среднее количество строк в методе в стандартной большой программе на Nemerle?


    ANS>Судя по тем примерам, которые тут давали, то это рулоны на 2 экрана.


    Учитывая, что есть море методов вроде:
    public FilteredLength (f : 'a -> bool) : int
    {
        NCL.FilteredLength (this, f)
    }

    и
    public Filter ['a] (l : list ['a], f : 'a -> bool) : list ['a]
    {
        $[ x | x in l, f (x) ]
    }

    то в среднем, как и в любой уважающей себя больнице размер метода може быть 7 строк, или 10 кубосимволв или 36.6 градусов. Это не важно.

    Важно, то что на Nemele еще до его официального рождения напиан такой сложный продукт как... правильно, вы догадались , как Nemele. Причем объем исходников занимает 1.5 метра. Куда вхояит, компилятор бибиотеки и утилиты (в том числе консольный интерпретатор).

    Было бы забавно найти хотя бы одну версию Смотлтока компилируемую на самом себе и сравнить объем кода. Вель Смолток так прост. Он уж точно должен дать фору столь длинному языку.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[23]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 18.09.06 23:10
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    VK>> Вот например в Dolphin Smalltalk можно в достаточном количестве откопать таких вот методов:


    ANS>Ужос. На лицо ручная диспетчеризация сообщений. Я бы сделал это при помощи враппера + perform: либо на метаданных (атрибуты, аннотации, прагмы или как оно там называется) при наличии их. В Tweak сделано на аннотациях.


    Ты нам зубы не заговаривай. Лучши скажи "был не правл... програнл... в любом более менее большом проекте всегда найдутся длинные функции".

    Пойми пока ты будешь гнать вот такую фигню про 7 строк в методе и при этом глядя на факты делать вид, что это не замечашь, то никто с тобой серьезно говорить не будет.

    Что до методов и Сомлтока... тут все очень просто. Так как методы ты в одном фале не видишь и их обвязка (сигнатура и т.п.) тебя не трогает конечно можно делать много мелких методов. Для языков в которых весь код виден сразу и лежит в файлах создание метдов-пустышек редко бывает очень выгодно. Ведь на одну строчку действительно важного кода ты потратишь еще минимум 3 обвязочных строки. Причем в сингнатуре типизированного языка ты еще и будешь вынужден наколбасить кучу не очень важно для реализации информации.

    Вот и выходит, что порой выгоднее не выносить что-то в одтельный метод. Для декомпозиции таких вещей в том же Nemerle есть локальные функции и тот самый паттерн-матчинг.

    Причем паттерн-матчинг крмое декомпозиции и полиморфизма еще дает и повышение (порой радикальное) выразительности. Это ведет к упрощению и уменьшению кода. И это тебе просто надо понять. Потому как спорить с очевидными вещами конечно можно, но не разумно.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[26]: Не нужно спекуляций
    От: vdimas Россия  
    Дата: 19.09.06 06:19
    Оценка: :)
    Здравствуйте, Lazy Cjow Rhrr, Вы писали:


    LCR>Я долго смотрел на эту фразу, но она для меня по-прежнему звучит как тавтология "если А, то А". Сперва было забавно, сейчас уже конечно нет, но от этого меньшей тавтологией не становится, ибо для меня "программа работает" и "программа не содержит ошибок" суть одно и то же, что конечно, как следует из прочитанного выше
    Автор: eao197
    Дата: 18.09.06
    небольшого наблюдения о зависимости иллюзий от опыта, в твоём случае совсем не так. Понятно, что я не прочувствовал вышеозначенную тонкую грань...


    Грань — это твое собственное отношение к утверждению "в МОЕМ коде нет ошибок". Судя по другим твоим постам, ты уже далеко за гранью в нужном направлении.
    Re[30]: Не нужность super return (нелок. возврата) [рассм. п
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 19.09.06 06:59
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>А, что по гипотетическому коду с вымышленными операторами вроде super return действительно можно судить о знаниях человека?

    Конечно. Если человек пытается писать код вида:
    try
    {
     ... 
     Child.Unlock();
    }
    catch(...)
    {
      Child.Unlock();
    }

    То тут явная проблема с пониманием finally. Независимо от количества вымышленных операторов среди реальных.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[24]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 19.09.06 08:07
    Оценка: :)
    Здравствуйте, VladD2, Вы писали:

    ANS>>Ужос. На лицо ручная диспетчеризация сообщений. Я бы сделал это при помощи враппера + perform: либо на метаданных (атрибуты, аннотации, прагмы или как оно там называется) при наличии их. В Tweak сделано на аннотациях.


    VD>Ты нам зубы не заговаривай. Лучши скажи "был не правл... програнл... в любом более менее большом проекте всегда найдутся длинные функции".


    Найдутся. Например, код генерации запросов по данным в некой форме. Тут хоть стой, хоть падай. Что ST, что Nemerle — один фиг.

    VD>Пойми пока ты будешь гнать вот такую фигню про 7 строк в методе и при этом глядя на факты делать вид, что это не замечашь, то никто с тобой серьезно говорить не будет.


    Ті что сказать то хотел?

    VD>Что до методов и Сомлтока... тут все очень просто. Так как методы ты в одном фале не видишь и их обвязка (сигнатура и т.п.) тебя не трогает конечно можно делать много мелких методов.


    таки да.

    VD>Для языков в которых весь код виден сразу и лежит в файлах создание метдов-пустышек редко бывает очень выгодно. Ведь на одну строчку действительно важного кода ты потратишь еще минимум 3 обвязочных строки. Причем в сингнатуре типизированного языка ты еще и будешь вынужден наколбасить кучу не очень важно для реализации информации.


    Какой чрезмерній синтаксический оверхед.

    VD> Потому как спорить с очевидными вещами конечно можно, но не разумно.


    Тебя єто никогда не останавливало.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[27]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 19.09.06 08:07
    Оценка: 19 (1)
    Здравствуйте, VladD2, Вы писали:

    VD>Было бы забавно найти хотя бы одну версию Смотлтока компилируемую на самом себе и сравнить объем кода.


    Влад, вообщето у ST такая суть, что компилятор должен быть написан на нём самом. Wellcome.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[3]: Контрольную устроить, что-ли?
    От: Klapaucius  
    Дата: 19.09.06 12:04
    Оценка: +1
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Сумму знаний источником считать можно. А сумму беллетристики...


    Зашевелились меха на баяне,
    Я сел в уголке и тихо поплыл.


    ГВ>>>Контрольная работа: передайте мне свой взгляд на это сообщение. Верифицируйте правильность передачи взгляда. Ну или просто опишите сам метод передачи взгляда.

    K>>Верифицировать нельзя практически ничего. Даже Ваше любимое 2*2, насколько я помню, пролетает. И что дальше?
    ГВ>Значит, кол авансом был по делу.

    Сдуваем пыть с моей зачетки? Если Вы такой спец по алгебре, то докажите непротиворечивость арифметики.
    Я правда алгебру подзабыл, но разве теорема Геделя о неполноте не распространяется на прикладное исчисление предикатов, а ведь арифметика это как раз прикладное исчисление предикатов, разве нет?

    ГВ>>>>>Да нет, ничего не может помешать. Каждый волен сходить с ума по-своему.

    K>>>>Вы не отклоняйтесь в область психиатрии. Вы обясните где еще может быть парадигма, если не в голове программиста, который смотрит программу.
    ГВ>>>Понимаете ли, нельзя путать "парадигму" как агрегатное (объектное!) понятие и тот эффект, который возникает в голове конкретного наблюдателя при следовании ей.
    K>>А если парадигма не существует в какой бы то ни было другой форме, кроме как возникая в голове наблюдателей при следовании ей?
    ГВ>Тогда это ведомство — психиатрическое. Что и требовалось доказать.

    Везде Вам психиатры мерещатся.

    K>>>>Если вы так волнуетесь по этому поводу, дайте определение термина "определение". Имеют ли определения физический смысл? Или это может только взгляд, существующий в голове?

    ГВ>>>На бумаге, во всяком случае, я видел множество определений самых разнообразных вещей. Ergo, это не только тараканы в голове.
    K>>(бъется головой о столешницу). Уффф... Испачканая бумага существует в основном для того, чтобы не подзабыть своих тараканов.
    ГВ>А...
    K>>Плюшевый медведь с Антареса, случись ему увидеть эту бумажку с определением воспримет определение?
    K>>Нет. Потому, что он вне культурного контекста? Понятно?
    ГВ>Я это всё прекрасно понимаю, не утруждайтесь.

    Это особенно хорошо видно по Вашим словам

    На бумаге, во всяком случае, я видел множество определений самых разнообразных вещей. Ergo, это не только тараканы в голове.


    ГВ>Вы можете сосредоточиться на тех простых вещах, о которых я писал? Мне не интересно нахождение самого лучшего определения, мне вполне понятно, что лексика и семантика терминов этого определения должны быть понятны читателям, для меня также не составляет тайны, что чем больше людей трактуют выражение одинаково, тем проще общаться.

    ГВ>И почему-то для меня совершенно не стало откровением рассуждение про культурный контекст. По большому счёту единственное, против чего я возражаю — так это против "подхватывания" распространённой трактовки (определения) без его критической оценки. Ну и далее всё то, что я писал об отношениях большиства и меньшинства.

    Так дело не в том, что к чему-то там нужно отностится критически. Дело в том, что я настаиваю на том что терминология в первую очередь служит для коммуникации, в то время как Вы ставите во главу угла сначала некую "правильность", потом "корректность" не предлагая никакого практического способа определить эту правильность и не корректность — в лучшем случае возможность определить некую "заведомую некорректность", которая по вашему должна определятся так "если есть в Википедии — в печку!". На хорошую практику никак не тянет.

    ГВ>Мифический мир тоже может "существовать". Это не отменяет требований корректности по отношению к нему.


    С этого места поподробнее, пожалуйста.

    ГВ>>>>>Определение ООП включает в себя "взгляд" в составе описания (через "парадигму"). Ergo, это определение некорректно по факту, его даже рассматривать нельзя в качестве определения.

    K>>>>Некорректным определением пользоваться можно. Если его знают.
    ГВ>>>А что оно будет определять, будучи заведомо некорректным? Всё, что захочет очередной оратор? Хорошенькое же определение!
    K>>А много есть корректных определений? Вы о какой корректности все время толкуете?

    ГВ>Корректность — это, как минимум, отсутствие заведомых некорректностей.


    Рекурсивное определение.

    ГВ>Не надо сводить на то, много их или мало.


    С точки зрения коммуникации это значения не имеет.

    ГВ>Понимаете, к примеру, некая длинная математическая выкладка может приводить к неким результатам. Но если в ходе этих выкладок используется завуалированное деление на нуль (зависит от контекста, разумеется, иногда деление на нуль может быть нужно), то вся выкладка улетает псу под хвост с точки зрения практической её значимости (софистическая и психоделическая ценнность — разговор отдельный).


    Жалкий пример. Выбрасывание такого рода табу в математике дает не какую-то там "софистическую ценность", а зачастую открывает новый мир.

    ГВ>Даже если она изложена связно и окружающие с ней типа как согласились. Таким образом можно не вдаваясь в глубины мысли автора выкладки смахнуть её всю как заведомо некорректную. То же самое и в случае субъектных определений: совершенно не важно, что именно определяется и насколько точны все слова данного текста. Если им собираются пользоваться, как источником определения, то не стоит удивляться, что кто-то ушлый ткнёт пальцем в голого короля и пошлёт на хрен всю камарилью. Король-то и в самом деле голый.


    Я все еще жду обоснованного критерия "заведомой некорректности". Он у Вас интуитивный что-ли?

    K>>Вы можете задать некое исчисление определений, доказать его непротиворечивость, а потом доказывать с помощью этого исчисления корректность определений?

    ГВ>Исчисление здесь ни к чему. Вполне достаточно банального логического построения. Элементарного, если не зацикливаться на эскапистской "неопределимости всея". Речь идёт о практической применимости терминов. Как можно практически применить "взгляд" — я не понимаю, а Вы от ответа уклонились.

    Логика — это тоже, в общем-то исчисление. И речь идет не о "эскапистской неопределимости" а о совершенно практической неопределенности.

    K>>Корректных определений не бывает, бывают актуальные.

    ГВ>Глупости не говорите, ладно? Нащли, что противопоставлять!

    Раз мишки с Антареса больше не катят обясню по другому.
    Существовало некое определение спутника планеты, которое досталось нам с тех времен, когда считали что что-то вокруг чего-то там вращается. По этому определению Харон считался спутником Плутона.
    Потом теормех продвинулся и люди поняли что нужно говорить о вращении элементов системы вокруг барицентра.
    Пусть мы теперь считаем, что то, вокруг чего вращается все остальное — это тело, которое обращается вокруг барицентра по наименьшей орбите. По этому уточненному определению Харон все еще спутник Плутона. Но вот это определение перестало нравится и приняли другое, согласно которому для "центрального тела" требуется следущее:
    Барицентр должен находится внутри этого "центрального тела". Начиная с этого момента Харон перестал быть спутником Плутона, а, например, Луна спутником земли быть не перестала.
    Вы серьезно считаете, что это все шаги на пути к абсолютной истине а не простая договоренность?
    Это не шаги к истине потому, что понятие "спутник" — это просто выдуманная нами условность.
    Точно также и ООП — это наша выдумка, а не познаваемый нами объект материального мира. И если ООП не является таким объектом, но является взглядом на мир, то как его можно определить с позиции "куда смотрим", а не с позиции "откуда смотрим"?

    K>>Ну определяли в средние века луну, как кусок зеленого сыра, а сейчас — иначе. Первое определение сейчас не актуально, а второе тогда. Думаете, если бы нынешнее определение Луны попало в средние века, оно засияло бы там светом абсолютной истины?

    ГВ>Не знаю.

    Подумайте.

    K>>>>Определением, которое никто не знает — пользоваться в принципе не возможно.

    ГВ>>>Значит, надо почитать книги, где это определение имеется.
    K>>Т.е. сделать его общепринятым. Спасибо за 25ю итерацию одного и того же объяснения.
    ГВ>Да, сделать его общепринятым. Вопрос в том, что именно делать, а ещё точнее — что именно не делать общепринятым.

    Меня этот вопрос не заботит. Для коммуникации никакого значения не имеет. Это же говорил уже "итератор произвольного доступа" или "горшок произвольного доступа" — один черт полная ахинея. Но к первому привыкли, в своем контексте термин понятен, им можно пользоваться, терминология свою функцию выполняет.
    Не хотелось бы Вас расстраивать, но подавляющее большинство терминов оставляют желать много лучшего, хотя привычка обычно не дает это заметить. Так что, раз уж начали крестовый поход, не застревайте на "парадигме". Двигайтесь дальше. Дел — непочатый край.

    K>>>>Вы сами то понимаете о чем говорите? Т.е. если сделать определение распространенным, то все будет работать нормально.

    ГВ>>>Не всякое определение стоит делать распространённым. К википедическому это относится в полной мере. Ну, попытайтесь определить токарное дело через "усилия токаря". Много он "натокарит"?
    K>>Думаете, ознакомившись с другим определением он натокарит больше?
    ГВ>Думаю, что если бы станок определялся как "взгляд на груду металла", то и металла никакого бы не было. А если бы руководство по технике безопасности было сформулировано в терминах "взгляда на шпиндель из-под станины" и "неопределимости понятия 'частота вращения'", то и токари бы не выжили.

    Не надо путать станок и токарное дело. Для станка объектное определение вполне естественно.

    K>>>>При то, что вы сказали буквально следующее:

    K>>>>

    K>>>>Следовать "общепринятым" терминам в противовес правильных — как раз показатель бездумности.

    K>>>>Бездумным быть не хочется, вот и интересно, что вы имели в виду.
    ГВ>>>Ровно то, что написал. Но уточню. Избирать общепринятую (некорректную) терминологию в противовес корректной (хотя возможно, что не лишённой недостатков) — признак бездумности действия. Я понятно выражаюсь?
    K>>Дайте критерии корректности определений.
    ГВ>Я это уже 25 раз объяснял. Ну сколько можно? Я могу дать критерий отсечения некорректных определений. Если Вы считаете, что можно руководствоваться "взглядом" или выдавать за чёткое определение текст, который сам содержит слова "для этого нет точного определения", то я уж и не знаю, что тут добавить.

    Я не говорил о четкости. Я понял, что Вам хочется поотсекать. давно не брали в руки шашек. Но гораздо труднее понять, как все эти отсечения помогут терминологии выполнять свою основную функцию.

    ГВ>>>>>Я не пытался сказать, что нечто однозначно и навсегда правильно, хотя склонен считать, что...

    K>>>>... что истина всегда конкретна? Вы одновременно верите и в то, что дед Мороз есть и в то, что его нет?
    ГВ>>>Причём тут дед Мороз и моя вера (неверие) в него? Я где-то отрицал возможность или необходимость последовательного уточнения терминологии?
    K>>И что такое истина по Вашему?
    ГВ>В каждом конкретном случае она своя. Но неизменно — лучезарная и сияющая.

    Не слишком содержательно.

    ГВ>>>>>Ещё раз повторяю набор посылок и моё возражение в схематичной форме:

    ГВ>>>>>1. Понятию "ООП" даётся субъектное определение А.
    K>>>>в определении ООП использован термин, для которого существует субъектное определение. Вот так будет вернее.
    ГВ>>>Возможно, но именно через субъектное определение определяется само ООП.
    K>>Это зависит от определения "парадигмы".
    ГВ>В частности. И в той же частности оно своей кривизной валит построенное на нём "определение".

    Вы не поняли о чем я. Для любого термина можно придумать плохое определение, и что, таким образом, получается, можно завалить все что угодно? Есть у меня определение A, которое ссылается на B. Нахожу (придумываю) плохое определение B — и что, термин A — валится? Безумие какое-то. Можно ведь найти(придумать) и хорошее определение B.

    ГВ>>>Я возражаю против следования за большинством, потому что оно — большинство и презрения меньшинства, потому что оно — меньшинство.

    K>>Разумно. Но это то причем здесь?
    ГВ>Смотрим самое начало дискуссии.

    Смотрим. Там ссылка на общепринятую терминологию побивается тем, что "общепринятость" — это знамя дураков.
    Никаких возражений по существу и даже по субъектности.объектности там и в помине нет.
    Ну я и говорю, что то, что не "общеприянто" — вообще ни какая не терминология. И становится ей только в узких кругах посвещенных. там — она работает. Ну что на это можно по делу возразить, а?

    ГВ>>>Я не пытаюсь сейчас докопаться до того, что есть "настоящее ООП", "чистое ООП" и так далее. Потому я и выделил именно эти аспекты (объектное-субъектное и "большинство") доводов.

    K>>Давайте докапаемся хотя-бы до того, какое определение можно считать корректным (правильным). И до того, конкретна все-таки истина всегда или нет.
    ГВ>Корректное != правильное. Само по себе определение может быть вполне корректным, но притом не точно определять сам предмет и т.п.

    Печальная история. А как можно определить предмет точно (полно?) если отношение между предметом и языковым знаком асимметрично?

    ГВ>>>>>Моё возражение. В силу заведомой некорректности определение А нельзя принимать как истинное.

    K>>>>Утверждение о заведомой некорректности не доказано.
    ГВ>>>Простите, а как можно определить объект через характеристики субъекта (тем паче, что мы ведём речь о технической деятельности)? Вот уж где эзотерика-то начинается! Йоги и дзенщики нерво медитируют в сторонке.
    K>>Парадигма не техническое определение, а общефилософское, так что все в порядке.
    ГВ>Ага, ну я же говорю — эзотерика чистой воды.

    Эзотерика это как раз про узкие круги посвященных. Вы по моему, слово "эзотерический" не к месту применяете.

    ГВ>>>>>В данном случае в п.3 сделано две ошибки: а) применена аргументация коллективом

    K>>>>Аргументация коллективом была применена как раз для защиты эзотерического определения.
    ГВ>>>Ой ли? А если перечитать?
    ГВ>[...]
    ГВ>>>Так где здесь первый раз прозвучала апелляция к общепринятости?
    K>>Не важно, где первый раз. Когда речь идет о терминологии апелляция к общепринятости полностью справедлива — вот это важно.
    K>>Общепринятость для пригодной к использованию терминологии необходимое требование. Понятно, что не достаточное. но точно необходимое.
    ГВ>Не ставьте коня поперед телеги, ладно? Сначала терминология должна быть корректно определена в своём контексте. А потом уже имеет смысл рассуждать о её приемлемости и общепринятости. Мало ли, что взбредёт в голову среднестатистическому большинству?

    А по моему, все наоборот.

    ГВ>>>>>Всё ясно, но пример не в кассу. Здесь нужно противопоставлять именно "взгляд" как свойство субъекта и некое название вещи как пример объектного определения.

    K>>>>Название вещи есть взгляд и является свойством субъекта. Названия только в такой форме и существуют.
    ГВ>>>Не-не-не. Не "есть взгляд", а "выражают взгляды". Разница — в отчуждении от субъекта. Сами по себе взгляды остаются при субъектах и никого, по большому счёту не интересуют, взглядов у каждого может быть миллион.
    K>>А названий сколько может быть?
    ГВ>Их тоже может быть много.

    Ну и к чему это замечание про миллион если и взглядов и названий может быть сколько угодно?

    K>>>>Что понимается под корректностью описания? Полнота? — она недостижима. Непротиворечивость? — она неверифицируема.

    K>>>>Что еще?
    ГВ>>>Как минимум, отсутствие заведомых некорректностей. Далее зависит от контекста. В данном случае было одно заведомо некорректное
    K>>Очень интересно. Заведомо некорректное потому, что некорректное. Заведомо.
    ГВ>Я уже отписывал не раз, почему именно.

    Начинали, да только до конца не доводили.

    ГВ>>>и одно корректное и возможно, точное определение.

    K>>Корретное потому, что рядом лежало некорректное? Это такая наведенная корректность?
    ГВ>Нет, это характеристика самого по себе определения. Не зависимо от точности и полноты оного. Кей пишет об объектах (не путать с объектами из ООП). Википедия ссылается на субъект.

    Вы видимо точно дальше "парадигмы" не читали.

    ГВ>>>>>Верно, верно. Но я не буду называть "среднюю температуру", скажем, "вектором ощущений медперсонала".

    K>>>>Температура Васи Пупкина это вполне нормальный пучек ощущений для медперсонала. Вы знаете какой-то другой способ восприятия окружающей действительности кроме как через ощущения?
    ГВ>>>Приборы, мой друг, приборы. (Которых — восемь ) Иногда они куда как более точны, чем ощущения медперсонала.
    K>>- Приборы!
    K>>- Тридцать!
    K>>- Что тридцать?
    K>>- А что приборы?
    K>>А что приборы, Гена? Приборы для медперсонала это тоже, как завещал старина Юм, пучки ощущений.
    ГВ>Причём тут Юм? Для него (и его науки) объектом является психика людей. Интересно, много ли у него указаний на важность взгляда самого психиатра?

    Какой пассаж!
    Вы меня разочаровываете. Вообще-то, уважающие себя философы программирования не путают Гоголя с Гегелем, Гегеля с Бебелем, а Бебеля с Бабелем. А Юма (Hume, David) не путают с Юнгом (ни с тем и ни с другим). Юм ни разу не психиатр. Он из другой банды. Были еще такие чуваки как Мах (сразу говорю, что это не торговая марка Gillette, хотя про Маха Вы должны были слышать, ведь у Ильича, кажется, есть такая книжка "Материализм и импириокритицизм"), Поппер, Рассел. Они философы. Занимались философией науки. Мы как раз о ней и говорим.
    А вообще это многое объясняет, да. Знаем мы таких скептиков-любителей, которые про Юма не слыхали. Как результат: мировоззрение эклектичное, мельницы не ломаны, сферокони не дое... гм... не кормлены.

    K>>А когда небыло приборов, медперсонал ведь тоже температуру тогдашних Васей Пупкиных определял. Точность, понятное дело, была похуже, но это аспект технический и для общефилософской беседы малосущественный.

    ГВ>Отнюдь. Это как раз пример последовательного уточнения понятий (терминов). От "холодный-тёплый-горячий-в жару" переходим к уточнённой градации в градусах Цельсия (Фаренгейта, Кельвина).

    Это уточнение шкалы, а не понятия. К понятию никакого отношения не имеет. Шкала появляется если мы задаем еденицу измерения. Вас чего все время на шкалы и эталоны клонит. Специальную еденицу для температуры вполне могли и не вводить.
    И уточнение шкалы никакого отношения к уточнению определения не имеет.

    ГВ>>>>>Разницу понимаете?

    K>>>>А Вы? В чем она заключается?
    ГВ>>>См. выше. Приборы врут реже, чем ощущения. Хотя у кого — как, но это к делу не относится.
    K>>Термометры не врут. Это было бы возможно только в том случае, если бы существовала некая "истинная температура".
    ГВ>Эталоны и всю метрологиюю отправляем лесом? Моя линейка самая правильная, потому что на ней написано: "1 метр". Ну и что, что она в нагрудном кармане умещается? Вот такой у меня карман... Нет, вот такая у меня грудь!

    Не обеспечивают нужную точность и врут — это совсем разные вещи.

    K>>>>Я что-то не пойму. Вы утвеждаете, что конкретность — это вопрос договоренности?

    ГВ>>>Не без того. Вопрос в том, какой характер носит эта договорённость. Невозможно договориться "смотреть" на вещи определённым образом.
    K>>Но почему? Так чаще всего и бывает. Договариваемся и смотрим. Тот, кто о договоре не знает и не знает что он должен видеть — тот договоренного не увидит.
    ГВ>Главный вопрос тут "Куда смотрим?", а не "Откуда?" Вот смотрите, мы сейчас если начнём определять, что такое "взгляд", то уйдём в такие дебри, что википедия покажется детскими шалостями.

    А философия познания, даже на таком вот кухонном уровне дискуссии как у нас с Вами это совсем даже не французский регулярный парк. Это они и есть — дебри. Так что см. ниже.

    K>>>>Т.е. если истина всегда конкретна, то это означает, что истина всегда такая, как договоримся?

    ГВ>>>Что-то в этом роде,
    K>>Уже лучше. Вы подаете надежды, определенно! Но как же все-таки быть со словами о том, что "истина всегда конкретна"?
    ГВ>Да как есть. Истина — суть характеристика ответа на вопрос о чём-то. В отвязке от вопроса-ответа — метафизическая абстракция.

    Внимание, вопрос: Жив ли кот Шредингера?
    Ответ: Кот Шредингера жив.
    Это истинный ответ? Или ложный?

    ГВ>Или одно из понятий булевой алгебры.


    Как понятие булевой алгебры истина конечно существует и вполне конкретна, вот только в реальном мире рулят нечеткие логики, а там уже не все так просто.

    ГВ>>>но не надо путать договорённость о, например, достаточной точности термометра и, кхм, "схожие взгляды на жизнь". В первом случае мы можем сделать вывод о вполне конкретном термометре, что он достаточно точен (пригоден для использования) для нашей деятельности, во втором...

    K>>... вывод о том, что человек с определенными взглядами на жизнь пригоден для использования. В чем принципиальная разница?
    ГВ>В неверифицируемости оных взглядов в строгом смысле этого слова. На бытовом уровне — хоть груздём называйте.

    Что есть верифицируемость в строгом смысле этого слова?

    ГВ>>>>>Правда, я не уверен, что в этом соглашении принимало участие некое "общественное большинство", за исключением большинства из каких-то научных организаций.

    K>>>>Я уже писал, что способ установления общепринятости значения для дискуссии не имеет. Сколько еще про это написать?
    ГВ>>>Кстати — имеет. Кто пишет в википедию — никому не известно. Это дополнительный камень в огород википедии.
    K>>Ну да. А БСЭ пишет доктор Мегамозг Мегамозгович Мегамозглый. Это здорово подкрепляет БСЭ авторитетом.
    ГВ>БСЭ авторитетом подкрепляла АН СССР, коль мне не изменяет память.

    Ну так что? Авторитет не годится в качестве доказательства истинности. Понятно, что у Википедии полно глюков, но у других энциклопедий тоже проблем хватает. Централизованное редактирование оставляет такой простор для идиологизации, фальсификации, случайных ошибок, замалчивания. Что у нас есть беспроблемный источник? Алан Кей?

    ГВ>>>>>И заметьте, эталон тепературы сугубо объектен.

    K>>>>Не замечу. То, что мы можем дать объектное определение тройной точке воды, и то что кто-то договорился считать тройную точку воды "эталоном температуры" вовсе не означает, что мы можем дать объектное определение эталону температуры. Понятно?
    ГВ>>>Что????? Где в определении эталона упоминаются "взгляды" исследователей на процесс измерения?
    K>>Ну, непосредственно и в определении ООП нет упоминаний о взглядах. Но вот пройдя по цепочке терминов успользованных для определения эталона температуры мы непременно наткнемся на те, которые как раз через взгляды и определяются.
    ГВ>Докажете?

    Попробую.

    K>>>>Тройная точка существует независимо от культурного контекста, от нас, от наших представлений о ней. "Эталон температуры" вне наших представлений не существует. отношение между тройной точкой и "эталоном температуры" — асимметрично.

    ГВ>>>Это понятно. Но где здесь апелляция к субъекту? Возьми эталонные приборы и получишь точное (надёжно повторяемое разными исследователями) значение температуры для того или иного процесса. Где здесь мнение субъекта об эталонности? Есть вполне объектная (и объективная) привязка одних измерительных шкал к другим.
    K>>Проблема в самих шкалах. И в самой температуре. Температура настолько же реальна, насколько реален средний рост или средний вес. Ее надо выдумать. А перед тем выдумать такое понятие как "среднее". Есть движущиеся частицы. Температуры нет — это выдумка, определение, унаследованное из устаревшей, потерявшей актуальность теории теплорода, получившее новую жизнь вместе с новой статистической трактовкой.
    ГВ>Почти согласен.

    Т.е. почти доказал? Могу еще добавить.

    K>>Ученый повторит опыты, но если он не в курсе, что существует такое понятие как "температура", то сможет ли он, проведя все эти опыты и проанализировав результаты ввести такое понятие? Да, сможет. Но вполне может этого и не сделать. Температура это не взгляд, конечно. Но вот термодинамика — это уже взгляд. Понятно?

    ГВ>Точно "взгляд"? Или, может быть "мнение" или "парадигма"? Или просто "наука"?

    Вы в курсе, что температура вводилась как "крепость"? Как доля содержания теплорода в веществе?
    И что многие достижения класической термодинамики времен Карно не потеряли своего значения, хотя делались во времена теории теплорода в наши дни совершенно не актуальной? И что термодинамика легко перенесла изменение трактовки физического смысла своих основных определений? И так ли в таком случае верно то, что то, откуда мы смотрим имеет меньшее значение чем то куда мы смотрим? И что математика в этом смысле пример еще более показательный?

    Проведем такой вот мысленный эксперимент: давным давно, в далекой-далекой галактике абсолютно вне нашего культурного контекста можно было проделать все опыты, которые можем проделать мы. Скажите, привело бы это в обязательном порядке к появлению термодинамики, вообще точно такой же как у нас науки? Только не говорите, что все эти вино-водочные ассоциации носятся в воздухе.

    Все дело в том, что нашу науку нельзя построить без знания нашего культурного контекста, только на основании результатов тех же самых экспериментов. Это наш взгляд на мир. Поэтому мне непонятно это преуменьшения значения того "откуда мы смотрим" в пользу того "на что мы смотрим".

    ГВ>Между прочим — блестящий пример дачи сугубо объектного определения. Так что же Вы мне пытаетесь доказать? Что существует ещё одна, необычная трактовка термина "взгляд"?


    Понимайте как хотите.

    Просто у меня сложилось такое впечатление о Вашейм взгляде на мир, как будто бы "истина" на предметах написана, нужно только прищуриться и прочесть. Чем лучше прищурился — тем лучше прочитал. Но это ведь не так, вещественный мир не имеет на себе никаких ярлыков и определений. Это, в этом смысле, чистый лист, на который мы проецируем кино про наших мозговых тараканов. так вещи обретают имена. И воспринимать вещественный мир отдельно от своих мозговых тараканов мы ну никак не можем.
    А уж говорить о прищуривании при разгалядывании предметов, которых в вещественном мире вообще нет, которые мы же сами и придумали — просто бессмысленно.

    K>>>>>>Думаете, бывает температура, которая не "средняя по"?

    ГВ>>>>>В сущности — согласен.
    K>>>>Почему же тогда по поводу конкретной истины возражаете?
    ГВ>>>Какой именно?
    K>>Конкретной истины вообще. Ее существования.
    ГВ>Я??? Где???

    Вы же считаете, что конкретная истина существует?

    K>>Повторю: я по этому вопросу сказал только то, что необщепринятая терминология не работает.

    K>>Вы этот тезис не опровергли. Вместо этого перескакиваете на Википедию.

    ГВ>Так я только с размахиванием википедией и спорю по большому счёту, если Вы не заметили.


    Я в курсе дела. Вмдел тематические треды. Но мне разговор о Википедии вообще не интересен. В корневом сообщении нашей дискуссии никаких упоминаний про Википедию нет.
    Я там изложил свою точку зрения на предназначение терминологии и объяснил, почему апелляция к общепринятости в данном случае вполне корректна.
    Вам мои тезисы понятны?
    Возражения по существу есть?
    ... << RSDN@Home 1.2.0 alpha rev. 655>>
    'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
    Re[4]: Контрольную устроить, что-ли?
    От: Cyberax Марс  
    Дата: 19.09.06 13:30
    Оценка: 12 (1)
    Klapaucius wrote:
    > Сдуваем пыть с моей зачетки? Если Вы такой спец по алгебре, то докажите
    > непротиворечивость арифметики.
    > Я правда алгебру подзабыл, но разве теорема Геделя о неполноте не
    > распространяется на /прикладное/ исчисление предикатов, а ведь
    > арифметика это как раз прикладное исчисление предикатов, разве нет?
    Нет. Арифметика уже не полна.

    Полной является логика первого порядка, или геометрия Евклида.
    Posted via RSDN NNTP Server 2.0
    Sapienti sat!
    Re[4]: Контрольную устроить, что-ли?
    От: IT Россия linq2db.com
    Дата: 19.09.06 14:36
    Оценка: +3 -1 :))) :))
    Здравствуйте, Klapaucius, Вы писали:

    K>Возражения по существу есть?


    Наивный, какое по существу? Ты ещё не понял? У Гены принцип — когда мне хочется услышать что-нибудь умное, я начинаю говорить.
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[31]: Не нужность super return (нелок. возврата) [рассм. п
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 19.09.06 17:24
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>То тут явная проблема с пониманием finally.


    Это может быть вызвано просто плотным общением с С++ или просто какими то мыслями связанными с перехватом управления.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[28]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 19.09.06 17:24
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>Влад, вообщето у ST такая суть, что компилятор должен быть написан на нём самом. Wellcome.


    Сообщество СТ отличается болшой болтливостью. Большинство того что они гворят это не правда или не вся правда.

    Я же предложил сравнить объемы кода, а не читать развликально позновательную болтовню.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[29]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 19.09.06 17:39
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    ANS>>Влад, вообщето у ST такая суть, что компилятор должен быть написан на нём самом. Wellcome.


    VD>Сообщество СТ отличается болшой болтливостью. Большинство того что они гворят это не правда или не вся правда.


    VD>Я же предложил сравнить объемы кода, а не читать развликально позновательную болтовню.


    Повторим тот дурдом когда мы с тобой хорошенько посравнивали теплое с мягким?
    Re[30]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 20.09.06 00:15
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>Повторим тот дурдом когда мы с тобой хорошенько посравнивали теплое с мягким?


    Дурдомом ты это оценил потому что сравнение явно оказалось не в пользу твоей любимой игрущки, а в пользу моей.

    А вообще, сравнение как раз было бы очень интересно провести. Уверен, что и в случае СТ оно будет не в его пользу, так как в парсерах и компиляторах алгеброические типы и паттерн-матчинг рулит не по детски (не даром ML-клоны считаются фаворитами в компиляторостроении). Но СТ язык неординарный. Возможно у тех кто пишет на нем реальные проекты можено кое чему научиться.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[32]: Не нужность super return (нелок. возврата) [рассм. п
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 20.09.06 01:03
    Оценка:
    Здравствуйте, VladD2, Вы писали:
    VD>Это может быть вызвано просто плотным общением с С++ или просто какими то мыслями связанными с перехватом управления.
    Я не в курсе, чем это вызвано. Я всего лишь констатирую факт.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[29]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 20.09.06 06:36
    Оценка: +1 :))) :)
    Здравствуйте, VladD2, Вы писали:

    VD>Сообщество СТ отличается болшой болтливостью. Большинство того что они гворят это не правда или не вся правда.


    Бла-бла-бла.
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[31]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 20.09.06 08:10
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, FR, Вы писали:


    FR>>Повторим тот дурдом когда мы с тобой хорошенько посравнивали теплое с мягким?


    VD>Дурдомом ты это оценил потому что сравнение явно оказалось не в пользу твоей любимой игрущки, а в пользу моей.


    Нет это ты так оцениваешь По моему неадекватно, так как теплое с мягким
    Кстати можно продолжить есть исходники от IronPython.

    VD>А вообще, сравнение как раз было бы очень интересно провести. Уверен, что и в случае СТ оно будет не в его пользу, так как в парсерах и компиляторах алгеброические типы и паттерн-матчинг рулит не по детски (не даром ML-клоны считаются фаворитами в компиляторостроении). Но СТ язык неординарный. Возможно у тех кто пишет на нем реальные проекты можено кое чему научиться.


    Да развлечение было интересное
    ML конечно рулит на этой задаче, но не только у него и его клонов есть паттерн матчинг, было бы интересно например с эрлангом или хаскелем посравнивать и вполне может окажется что твоя игрушка тоже не лучшая
    Re[4]: Контрольную устроить, что-ли?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 20.09.06 15:14
    Оценка:
    Здравствуйте, Klapaucius, Вы писали:

    K>>>Верифицировать нельзя практически ничего. Даже Ваше любимое 2*2, насколько я помню, пролетает. И что дальше?

    ГВ>>Значит, кол авансом был по делу.

    K>Сдуваем пыть с моей зачетки? Если Вы такой спец по алгебре, то докажите непротиворечивость арифметики.

    K>Я правда алгебру подзабыл, но разве теорема Геделя о неполноте не распространяется на прикладное исчисление предикатов, а ведь арифметика это как раз прикладное исчисление предикатов, разве нет?

    Распространяется. Но причём тут верификация высказываний простым логическими рассуждениями? Или ссылаясь на теорему Гёделя мы будем теперь всяку дурь принимать за глубокую истину?

    K>>>Нет. Потому, что он вне культурного контекста? Понятно?

    ГВ>>Я это всё прекрасно понимаю, не утруждайтесь.

    K>Это особенно хорошо видно по Вашим словам

    K>

    K>На бумаге, во всяком случае, я видел множество определений самых разнообразных вещей. Ergo, это не только тараканы в голове.


    Шутка это была.

    ГВ>>Вы можете сосредоточиться на тех простых вещах, о которых я писал? Мне не интересно нахождение самого лучшего определения, мне вполне понятно, что лексика и семантика терминов этого определения должны быть понятны читателям, для меня также не составляет тайны, что чем больше людей трактуют выражение одинаково, тем проще общаться.

    ГВ>>И почему-то для меня совершенно не стало откровением рассуждение про культурный контекст. По большому счёту единственное, против чего я возражаю — так это против "подхватывания" распространённой трактовки (определения) без его критической оценки. Ну и далее всё то, что я писал об отношениях большиства и меньшинства.

    K>Так дело не в том, что к чему-то там нужно отностится критически. Дело в том, что я настаиваю на том что терминология в первую очередь служит для коммуникации, в то время как Вы ставите во главу угла сначала некую "правильность", потом "корректность" не предлагая никакого практического способа определить эту правильность и не корректность — в лучшем случае возможность определить некую "заведомую некорректность", которая по вашему должна определятся так "если есть в Википедии — в печку!". На хорошую практику никак не тянет.


    К коммуникативным символам тоже следует относиться некритически? Это для меня новость. Семантику терминов куда засунем?

    ГВ>>Мифический мир тоже может "существовать". Это не отменяет требований корректности по отношению к нему.

    K>С этого места поподробнее, пожалуйста.

    За подробностями — к литературоведам.

    K>>>А много есть корректных определений? Вы о какой корректности все время толкуете?

    ГВ>>Корректность — это, как минимум, отсутствие заведомых некорректностей.
    K>Рекурсивное определение.

    Хорошо, отсутствие ссылок на субъект в определении объекта деятельности. Или деятельность мы в строгом соответствии с теоремой Гёделя тоже определим "абстрактно"?

    ГВ>>Не надо сводить на то, много их или мало.

    K>С точки зрения коммуникации это значения не имеет.

    Да ну? Что такое "парадигма"?

    ГВ>>Понимаете, к примеру, некая длинная математическая выкладка может приводить к неким результатам. Но если в ходе этих выкладок используется завуалированное деление на нуль (зависит от контекста, разумеется, иногда деление на нуль может быть нужно), то вся выкладка улетает псу под хвост с точки зрения практической её значимости (софистическая и психоделическая ценнность — разговор отдельный).


    K>Жалкий пример. Выбрасывание такого рода табу в математике дает не какую-то там "софистическую ценность", а зачастую открывает новый мир.


    Всякое бывает, см. выделенное. Оригинальное возражение — повтором.

    ГВ>>Даже если она изложена связно и окружающие с ней типа как согласились. Таким образом можно не вдаваясь в глубины мысли автора выкладки смахнуть её всю как заведомо некорректную. То же самое и в случае субъектных определений: совершенно не важно, что именно определяется и насколько точны все слова данного текста. Если им собираются пользоваться, как источником определения, то не стоит удивляться, что кто-то ушлый ткнёт пальцем в голого короля и пошлёт на хрен всю камарилью. Король-то и в самом деле голый.


    K>Я все еще жду обоснованного критерия "заведомой некорректности". Он у Вас интуитивный что-ли?


    Ещё раз: как передать "взгляд" другому субъекту?

    K>>>Вы можете задать некое исчисление определений, доказать его непротиворечивость, а потом доказывать с помощью этого исчисления корректность определений?

    ГВ>>Исчисление здесь ни к чему. Вполне достаточно банального логического построения. Элементарного, если не зацикливаться на эскапистской "неопределимости всея". Речь идёт о практической применимости терминов. Как можно практически применить "взгляд" — я не понимаю, а Вы от ответа уклонились.
    K>Логика — это тоже, в общем-то исчисление. И речь идет не о "эскапистской неопределимости" а о совершенно практической неопределенности.

    Хм. Под вами стул есть? Хорошо, может быть, Вы работете стоя. Тогда пол — есть? Да или нет?

    K>>>Корректных определений не бывает, бывают актуальные.

    ГВ>>Глупости не говорите, ладно? Нащли, что противопоставлять!

    K>Раз мишки с Антареса больше не катят обясню по другому.

    K>Существовало некое определение спутника планеты, которое досталось нам с тех времен, когда считали что что-то вокруг чего-то там вращается. По этому определению Харон считался спутником Плутона.
    K>Потом теормех продвинулся и люди поняли что нужно говорить о вращении элементов системы вокруг барицентра.
    [...]

    И то и то является корректными определением в смысле отсутствия ссылки на субъект. Никто же не говорит о "взгляде", как о части определения спутника. Да, изменили само определение и что?

    K>Вы серьезно считаете, что это все шаги на пути к абсолютной истине а не простая договоренность?

    K>Это не шаги к истине потому, что понятие "спутник" — это просто выдуманная нами условность.
    K>Точно также и ООП — это наша выдумка, а не познаваемый нами объект материального мира. И если ООП не является таким объектом, но является взглядом на мир, то как его можно определить с позиции "куда смотрим", а не с позиции "откуда смотрим"?

    Странно. Налицо изменение объекта определения: было — просто "центральное тело", стало — "тело с минимальным радиусом орбиты относительно барицентра". И что? Субъект-то где? Изменилось как раз то самое "куда", а не "откуда".

    K>>>>>Определением, которое никто не знает — пользоваться в принципе не возможно.

    ГВ>>>>Значит, надо почитать книги, где это определение имеется.
    K>>>Т.е. сделать его общепринятым. Спасибо за 25ю итерацию одного и того же объяснения.
    ГВ>>Да, сделать его общепринятым. Вопрос в том, что именно делать, а ещё точнее — что именно не делать общепринятым.

    K>Меня этот вопрос не заботит. Для коммуникации никакого значения не имеет.


    К сожалению — имеет. Если и не для коммуникации самой по себе, то по крайней мере — в отдалённой перспективе. Потому что заканчивается банальным: "я начальник, ты — дурак". Именно в простой практицкой жизни. Весовые характеристики суждений-то по-прежнему определять надо? Надо. А как их определять, если любое рассуждение сводится к субъектам? Вот и всё. А начинается с простого: правильно то, что притащено "большинством". Вот просто правильно — и всё.

    K>Это же говорил уже "итератор произвольного доступа" или "горшок произвольного доступа" — один черт полная ахинея. Но к первому привыкли, в своем контексте термин понятен, им можно пользоваться, терминология свою функцию выполняет.


    Угу, но не "восприятие горшка произвольного доступа", заметьте.

    ГВ>>Думаю, что если бы станок определялся как "взгляд на груду металла", то и металла никакого бы не было. А если бы руководство по технике безопасности было сформулировано в терминах "взгляда на шпиндель из-под станины" и "неопределимости понятия 'частота вращения'", то и токари бы не выжили.

    K>Не надо путать станок и токарное дело. Для станка объектное определение вполне естественно.

    Угу, ну хоть с этим определились.

    K>Я не говорил о четкости. Я понял, что Вам хочется поотсекать. давно не брали в руки шашек. Но гораздо труднее понять, как все эти отсечения помогут терминологии выполнять свою основную функцию.


    Простите, а термины в субъектной трактовке вообще не выполняют никакой коммуникативной функции — каждый додумывает, что он хочет. Ну откуда я знаю, как Вася Пупкин воспринимает итераторы произвольного доступа? Этим названием обобзначается конкретная конструкция языка програмирования — только и всего.

    K>>>И что такое истина по Вашему?

    ГВ>>В каждом конкретном случае она своя. Но неизменно — лучезарная и сияющая.
    K>Не слишком содержательно.

    Зато — верно.

    K>>>Это зависит от определения "парадигмы".

    ГВ>>В частности. И в той же частности оно своей кривизной валит построенное на нём "определение".

    K>Вы не поняли о чем я. Для любого термина можно придумать плохое определение, и что, таким образом, получается, можно завалить все что угодно? Есть у меня определение A, которое ссылается на B. Нахожу (придумываю) плохое определение B — и что, термин A — валится? Безумие какое-то. Можно ведь найти(придумать) и хорошее определение B.


    Дык можно придумать (найти) и хорошее определение A, которое не ссылается на B или ссылается на корректное определение B. Но какой смыссл ссылаться на "плохое" определение?

    ГВ>>>>Я возражаю против следования за большинством, потому что оно — большинство и презрения меньшинства, потому что оно — меньшинство.

    K>>>Разумно. Но это то причем здесь?
    ГВ>>Смотрим самое начало дискуссии.
    K>Смотрим. Там ссылка на общепринятую терминологию побивается тем, что "общепринятость" — это знамя дураков.

    Там ещё и контекст имеется: когда "общепринятое" противопоставляется малораспространённому на основании одной только общепринятости. Взятые сами по себе оценки распространённости ничего не означают вообще. Надеюсь, разница между действием и состоянием тут понятна?

    K>Никаких возражений по существу и даже по субъектности.объектности там и в помине нет.


    Правильно. Весь этот кочан капусты пришлось разрывать уже позже.

    K>Ну я и говорю, что то, что не "общеприянто" — вообще ни какая не терминология. И становится ей только в узких кругах посвещенных. там — она работает. Ну что на это можно по делу возразить, а?


    Да, терминология и должна появляться именно таким способом.

    K>>>Давайте докапаемся хотя-бы до того, какое определение можно считать корректным (правильным). И до того, конкретна все-таки истина всегда или нет.

    ГВ>>Корректное != правильное. Само по себе определение может быть вполне корректным, но притом не точно определять сам предмет и т.п.
    K>Печальная история. А как можно определить предмет точно (полно?) если отношение между предметом и языковым знаком асимметрично?

    Что такое ООП? Это моё настроение ранним летним утром под сенью дерев и песни попугаев.

    K>>>Парадигма не техническое определение, а общефилософское, так что все в порядке.

    ГВ>>Ага, ну я же говорю — эзотерика чистой воды.
    K>Эзотерика это как раз про узкие круги посвященных. Вы по моему, слово "эзотерический" не к месту применяете.

    Ну как же — очень даже узкий круг. Сведённый практически до одного субъекта. Только один знает истинный смысл "парадигмы", но никому не скажет.

    K>>>Не важно, где первый раз. Когда речь идет о терминологии апелляция к общепринятости полностью справедлива — вот это важно.

    K>>>Общепринятость для пригодной к использованию терминологии необходимое требование. Понятно, что не достаточное. но точно необходимое.
    ГВ>>Не ставьте коня поперед телеги, ладно? Сначала терминология должна быть корректно определена в своём контексте. А потом уже имеет смысл рассуждать о её приемлемости и общепринятости. Мало ли, что взбредёт в голову среднестатистическому большинству?
    K>А по моему, все наоборот.

    Ага. А откуда этому среднестатистическому большинству вообще на язык попадёт специальная терминология? Что-то не склёпывается.

    K>>>А названий сколько может быть?

    ГВ>>Их тоже может быть много.
    K>Ну и к чему это замечание про миллион если и взглядов и названий может быть сколько угодно?

    Да, названий у одного и того же объекта может быть много. В общем-то, я не об этом говорил.

    K>>>Очень интересно. Заведомо некорректное потому, что некорректное. Заведомо.

    ГВ>>Я уже отписывал не раз, почему именно.
    K>Начинали, да только до конца не доводили.

    До какого конца? До разъяснения, что такое субъект и объект деятельности?

    ГВ>>Нет, это характеристика самого по себе определения. Не зависимо от точности и полноты оного. Кей пишет об объектах (не путать с объектами из ООП). Википедия ссылается на субъект.

    K>Вы видимо точно дальше "парадигмы" не читали.

    Хорошо, перескочил через один шаг: википедия, расписывая, что такое ООП, ссылается на парадигму, которая уже ссылается на "взгляд".

    K>>>А что приборы, Гена? Приборы для медперсонала это тоже, как завещал старина Юм, пучки ощущений.

    ГВ>>Причём тут Юм? Для него (и его науки) объектом является психика людей. Интересно, много ли у него указаний на важность взгляда самого психиатра?

    K>Какой пассаж!

    K>Вы меня разочаровываете. Вообще-то, уважающие себя философы программирования не путают Гоголя с Гегелем, Гегеля с Бебелем, а Бебеля с Бабелем. А Юма (Hume, David) не путают с Юнгом (ни с тем и ни с другим). Юм ни разу не психиатр.

    Ай-яй-яй мне. Вы совершенно правы. Говорили о медицине, вот я и скользнул на Юнга. Принимаю упрёк.

    Только что это по сути меняет? Философски мы можем определять приборы и как пучки ощущений, и как взгляды, и как выб...ков инопланетного разума, и ещё как много чего. Но у них есть вполне конкретные названия, характеристики и прочие вполне конкретизированные атрибуты. Как вы себе представляете руководство к прибору, которое содержит слова: "прибор ФЧ-123/48-56Т представляет собой концентрированный пучок ощущений горячести и сжатия..." Не смешно? ГОСТ на ощущения не покажете? Можно ОСТ или хотя бы ТУ.

    Для персонала они могут быть пучками ощущений, спасителями человечества, и там, большой надеждой и всякой опорой. Да хоть лысым Барсиком. Философский эпитет сам по себе в металле не отольёшь и к больному не приклеишь. Приборы являются источниками информации, необходимой для принятия врачебного решения. Или вспомогательными инструментами. Или ещё чем-то там вполне (объектно-)определённым и объективным со вполне внятными целями и задачами. С объективно поверяемыми характеристиками, без которых запросто становятся хламом. Скажем, как определить достаточную надёжность кардиограммы? Что это вообще кардиограмма, а не рисунок синусоиды из розетки? По вдохновению расшифровщика? Сравнением рисунков?

    ГВ>>Отнюдь. Это как раз пример последовательного уточнения понятий (терминов). От "холодный-тёплый-горячий-в жару" переходим к уточнённой градации в градусах Цельсия (Фаренгейта, Кельвина).

    K>Это уточнение шкалы, а не понятия. К понятию никакого отношения не имеет. Шкала появляется если мы задаем еденицу измерения. Вас чего все время на шкалы и эталоны клонит. Специальную еденицу для температуры вполне могли и не вводить.
    K>И уточнение шкалы никакого отношения к уточнению определения не имеет.

    Да, верно. К уточнению понятия имеет отношение исследование физической сущности того, что мы называем температурой тела.

    K>>>Термометры не врут. Это было бы возможно только в том случае, если бы существовала некая "истинная температура".

    ГВ>>Эталоны и всю метрологиюю отправляем лесом? Моя линейка самая правильная, потому что на ней написано: "1 метр". Ну и что, что она в нагрудном кармане умещается? Вот такой у меня карман... Нет, вот такая у меня грудь!
    K>Не обеспечивают нужную точность и врут — это совсем разные вещи.

    Вылет за пределы допустимых отклонений — хоть враньём назови, хоть списанием. Сути не меняет. Если прибор работает в пределах допустимых отклонений, то его показаниям "36,85C" можно будет доверять не зависимо от того, как провела ночь дежурная медсестра.

    ГВ>>Главный вопрос тут "Куда смотрим?", а не "Откуда?" Вот смотрите, мы сейчас если начнём определять, что такое "взгляд", то уйдём в такие дебри, что википедия покажется детскими шалостями.

    K>А философия познания, даже на таком вот кухонном уровне дискуссии как у нас с Вами это совсем даже не французский регулярный парк. Это они и есть — дебри. Так что см. ниже.

    Ну ладно, смотрю.

    K>>>>>Т.е. если истина всегда конкретна, то это означает, что истина всегда такая, как договоримся?

    ГВ>>>>Что-то в этом роде,
    K>>>Уже лучше. Вы подаете надежды, определенно! Но как же все-таки быть со словами о том, что "истина всегда конкретна"?
    ГВ>>Да как есть. Истина — суть характеристика ответа на вопрос о чём-то. В отвязке от вопроса-ответа — метафизическая абстракция.

    K>Внимание, вопрос: Жив ли кот Шредингера?

    K>Ответ: Кот Шредингера жив.
    K>Это истинный ответ? Или ложный?

    А если вспомнить, для чего вообще этот кот был придуман?

    ГВ>>Или одно из понятий булевой алгебры.

    K>Как понятие булевой алгебры истина конечно существует и вполне конкретна, вот только в реальном мире рулят нечеткие логики, а там уже не все так просто.

    Тем выше значение точности в определении терминов.

    ГВ>>>>но не надо путать договорённость о, например, достаточной точности термометра и, кхм, "схожие взгляды на жизнь". В первом случае мы можем сделать вывод о вполне конкретном термометре, что он достаточно точен (пригоден для использования) для нашей деятельности, во втором...

    K>>>... вывод о том, что человек с определенными взглядами на жизнь пригоден для использования. В чем принципиальная разница?
    ГВ>>В неверифицируемости оных взглядов в строгом смысле этого слова. На бытовом уровне — хоть груздём называйте.
    K>Что есть верифицируемость в строгом смысле этого слова?

    Давайте начнём с простого: передайте мне Ваш взгляд на это сообщение. Именно взгляд.

    ГВ>>БСЭ авторитетом подкрепляла АН СССР, коль мне не изменяет память.

    K>Ну так что? Авторитет не годится в качестве доказательства истинности. Понятно, что у Википедии полно глюков, но у других энциклопедий тоже проблем хватает. Централизованное редактирование оставляет такой простор для идиологизации, фальсификации, случайных ошибок, замалчивания. Что у нас есть беспроблемный источник? Алан Кей?

    Не надо впихивать невпихуемое. Алан Кей к БСЭ никакого отношения не имеет. Он выигрывает в данном случае в сравнении с википедией.

    [...]
    K>>>Проблема в самих шкалах. И в самой температуре. Температура настолько же реальна, насколько реален средний рост или средний вес. Ее надо выдумать. А перед тем выдумать такое понятие как "среднее". Есть движущиеся частицы. Температуры нет — это выдумка, определение, унаследованное из устаревшей, потерявшей актуальность теории теплорода, получившее новую жизнь вместе с новой статистической трактовкой.
    ГВ>>Почти согласен.

    K>Т.е. почти доказал? Могу еще добавить.


    Нет, вы упускаете одно важное отличие: выражение взглядов и сами взгляды — не одно и то же. Теплород — выражение тогдашних взглядов. Но выражение до какой-то степени проверяемое разными субъектами. Безусловно, сам термин является выдумкой — продуктом работы чьего-то мозга по выделению явления и выражению его в конкретных символах.

    K>>>Ученый повторит опыты, но если он не в курсе, что существует такое понятие как "температура", то сможет ли он, проведя все эти опыты и проанализировав результаты ввести такое понятие? Да, сможет. Но вполне может этого и не сделать. Температура это не взгляд, конечно. Но вот термодинамика — это уже взгляд. Понятно?

    ГВ>>Точно "взгляд"? Или, может быть "мнение" или "парадигма"? Или просто "наука"?
    K>Вы в курсе, что температура вводилась как "крепость"? Как доля содержания теплорода в веществе?
    K>И что многие достижения класической термодинамики времен Карно не потеряли своего значения, хотя делались во времена теории теплорода в наши дни совершенно не актуальной? И что термодинамика легко перенесла изменение трактовки физического смысла своих основных определений? И так ли в таком случае верно то, что то, откуда мы смотрим имеет меньшее значение чем то куда мы смотрим? И что математика в этом смысле пример еще более показательный?

    Но смотрим-то мы на одно и то же явление: на температуру тела. Называем мы её долей теплорода или ещё как-то — не суть. Суть в том, что выделено и обозначено объективное явление природы. Нет ничего дурного в уточнении физического смысла понятия "температура".

    K>Проведем такой вот мысленный эксперимент: давным давно, в далекой-далекой галактике абсолютно вне нашего культурного контекста можно было проделать все опыты, которые можем проделать мы. Скажите, привело бы это в обязательном порядке к появлению термодинамики, вообще точно такой же как у нас науки? Только не говорите, что все эти вино-водочные ассоциации носятся в воздухе.


    Я поял вопрос. Нет, такой гарантии, разумеется — нет. Явления могли быть агрегированы иными способами. Скажем, то, что мы называем "температурой" могло быть увязано с "влажностью". Выглядит фантастично, но допустить можно.

    K>Все дело в том, что нашу науку нельзя построить без знания нашего культурного контекста, только на основании результатов тех же самых экспериментов. Это наш взгляд на мир. Поэтому мне непонятно это преуменьшения значения того "откуда мы смотрим" в пользу того "на что мы смотрим".


    А вот и не правильно. "Dзгляд" — это только тривиальное название для того самого культурного контекста. Условно-бытовое, проще говоря. Культурный контекст — это книги, живопись, правила поведения и т.п. Всё то, что можно потрогать, посмотреть и разучить. Но никак не "взгляд". Иначе невозможно было бы эффективно ввести кого-то условно "чужого" в этот самый контекст. Ну разве что при участии очень продвинутых гуру. А так всё просто — сначала ученику передаются базовые группы "символ-явление", и на базе этих символов ученик достраивает всё остальное, свойственное данному "культурному контексту". И таким образом, автоматически попадает в этот самый культурный контекст. Вуаля. Ну, не знаю, конечно, как может обстоять дело в случае принципиально иного восприятия у семиногого мишки с альфы Центавра, но для людей такая модель вполне себе работоспособна.

    ГВ>>Между прочим — блестящий пример дачи сугубо объектного определения. Так что же Вы мне пытаетесь доказать? Что существует ещё одна, необычная трактовка термина "взгляд"?

    K>Понимайте как хотите.

    Ну, судя по всему, вы как раз это и пытаетесь мне сказать. Раз уж так нажимаете: "Это наш взгляд на мир". Значит, культурный контекст — это наш взгляд на мир. И парадигма — тоже взгляд, правильно? И термодинамика — тоже взгляд. Тогда вопрос: что такое взгляд "вообще"? Можно ли определить его как какую-то независимую сущность?

    K>Просто у меня сложилось такое впечатление о Вашейм взгляде на мир, как будто бы "истина" на предметах написана, нужно только прищуриться и прочесть. Чем лучше прищурился — тем лучше прочитал. Но это ведь не так, вещественный мир не имеет на себе никаких ярлыков и определений. Это, в этом смысле, чистый лист, на который мы проецируем кино про наших мозговых тараканов. так вещи обретают имена. И воспринимать вещественный мир отдельно от своих мозговых тараканов мы ну никак не можем.


    А я и не спорю с зависимостью от тараканов. Только чем точнее мы описываем явление в терминах других объективных явлений — тем лучше.

    K>А уж говорить о прищуривании при разгалядывании предметов, которых в вещественном мире вообще нет, которые мы же сами и придумали — просто бессмысленно.


    Оригинально. В вещественном мире нет, например, аналога "руководителю проекта". Но у людей оно есть и соответствующая ролевая функция определяется вполне себе ясно. А по вашим рассуждениям получается, что либо раз мы его сами придумали, то и смысла его обсуждать никакого нет (ну хрена там разглядывать-то?), либо начальник — едва ли не "природная" данность и тогда ему два раза "Ку", потому что он из другого вещества (у него есть много кэцэ). Что-то каким-то мракобесием попахивает...

    K>>>>>>>Думаете, бывает температура, которая не "средняя по"?

    ГВ>>>>>>В сущности — согласен.
    K>>>>>Почему же тогда по поводу конкретной истины возражаете?
    ГВ>>>>Какой именно?
    K>>>Конкретной истины вообще. Ее существования.
    ГВ>>Я??? Где???
    K>Вы же считаете, что конкретная истина существует?

    И таким образом возражаю против её существования? Вы меня путаете или это открытие нового мира путём деления на нуль?

    K>>>Повторю: я по этому вопросу сказал только то, что необщепринятая терминология не работает.

    K>>>Вы этот тезис не опровергли. Вместо этого перескакиваете на Википедию.
    ГВ>>Так я только с размахиванием википедией и спорю по большому счёту, если Вы не заметили.
    K>Я в курсе дела. Вмдел тематические треды. Но мне разговор о Википедии вообще не интересен. В корневом сообщении нашей дискуссии никаких упоминаний про Википедию нет.
    K>Я там изложил свою точку зрения на предназначение терминологии и объяснил, почему апелляция к общепринятости в данном случае вполне корректна.
    K>Вам мои тезисы понятны?
    K>Возражения по существу есть?

    Вагон и телега впридачу.
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[4]: Контрольную устроить, что-ли?
    От: Mink Россия  
    Дата: 20.09.06 19:15
    Оценка: 12 (1) +4
    Здравствуйте, Klapaucius, Вы писали:

    K>Я там изложил свою точку зрения на предназначение терминологии и объяснил, почему апелляция к общепринятости в данном случае вполне корректна.


    Читаю эту ветку и постоянно вспоминаю слова одного нашего препода, который еще на первом курсе сказал нам: "Об определениях не спорят, о них договариваются."
    Сила, она в ньютонах
    Re: Насколько важен синтаксис языка?
    От: Pavel Dvorkin Россия  
    Дата: 21.09.06 04:03
    Оценка: 39 (4) +2 :)
    Здравствуйте, Курилка, Вы писали:

    К>Так вот — хотелось бы рассмотреть вопрос: насколько синтаксис языка определяет его удобство для использования?


    Если Ваш родной язык — русский, то его лексикон, грамматика, способ построения предложений для вас привычны и удобны, Вы легко и просто на нем изъясняетесь.

    Однако если Вам придется эмигрировать, скажем, в Англию или Германию, то на первых порах английский или немецкий будут Вам казаться очень неудобными и непривычными. И слово иногда подобрать сразу не удается, и синтаксис другой, и построение предложений иное. Проблемы...

    Если же в Англии или Германии Вам доведется жить 5-10 лет, и при этом общаться на русском будет не с кем, то со временем Вы привыкнете к английскому или немецкому, и именно его грамматика и синтаксис станут для Вас привычными и удобными. Если после этого Вы вернетесь в Россию, Вы незаметно для себя самого будете пытаться строить предложения на русском, используя англо- или германоязычную модель.

    (В скобках. А Вы не замечали, что даже и без всякой эмиграции, у нас (я имею в виду ИТ-работников) от большого общения с англоязычной литературой порой появляется желание сказать что-то по-русски "с английским акцентом"

    Все это объясняется тем, что руский, английский , немецкий и т.д. — в общем-то, языки равномощные, оперируют одним и тем же набором сущностей, позволяют выражать те или иные человеческие эмоции. На всех этих языках существует великая литература.

    Но если, не дай бог, вас захватит племя Мумбо-Юмбо или же Вы женитесь на Эллочке Людоедке и уедете с ней на необитаемый остров , то Вы будете ощущать серьезный дискомфорт от убогости языка. Со временем Вы к нему привыкнете тоже , но это неизбежно будет отрицательно влиять на вашу психику и умственные способности. Если племя Вас потом отпустит или Вы с Эллочкой разведетесь и вернетесь в Россию, то, боюсь, на первых порах от Вас люди ничего не услышат, кроме воинственных кликов племени либо же "Хо-хо" или "Парниша".

    Если же Вас захватят инопланетяне, способ общения которых радикально отличается от нашего, то Вас ждет очень серьезное испытание. Вам придется радикально изменить свой подход к передаче информации. Если Вам это удастся, то потом, вернувшись на Землю, Вам, возможно, вообще покажется странным, что люди, для того, чтобы передать друг другу какую-то информацию, вообще говорят. Зачем — ведь есть гораздо более удобный способ передачи информации. Возможно, Вы попытаетесь ему учить всех остальных, и будете удивляться, что, несмотря на все ваши аргументы, они, даже соглашаясь с Вами, все же продолжают разговаривать

    И с языками программирования — то же самое. Предлагаю всем желающим самим решить, кто из них русский, немецкий или английский, кто- язык Мумбо-Юмбо, а кто — инопланетный
    With best regards
    Pavel Dvorkin
    Re[28]: Не нужно спекуляций
    От: Дарней Россия  
    Дата: 21.09.06 06:54
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    E>>И кстати, существует и такой феномен: до поры, до времени, даже ошибочный код работает правильно.


    ANS>угу. даже удивляешся, как оно раньше могло работать вообще.

    ANS>То есть баг не то, что оно не работает, а баг, то что оно работает (работало)

    для этого даже есть специальное слово — клудж (kludge)
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[20]: Насколько важен синтаксис языка?
    От: vdimas Россия  
    Дата: 21.09.06 08:01
    Оценка:
    Здравствуйте, Дарней, Вы писали:


    Д>Я прекрасно осведомлен о своих собственных успехах и об аналогичных показателях у профессионалов.


    Цифры, сестра, цифры!


    Д>Задумайся лучше о том, что из двух попыток сделать догадку не имея данных ты два раза попал пальцем в небо.


    Т.е. вместо конкретики будем налегать на абстракционизм (по-сути, лепить отмазки)? Так и запишем...
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[20]: Насколько важен синтаксис языка?
    От: vdimas Россия  
    Дата: 21.09.06 08:01
    Оценка:
    Здравствуйте, _rasta, Вы писали:


    _>между прочим... мне всегда было интересно: держаться за перекладину можно только одной рукой, а вторая болтается в воздухе или держаться за перекладину одной рукой, а второй можно держаться за ту руку, которой держишься за перекладину?


    Вариант один — другая рука "болтается" для балансировки. Для тренировки неплох второй вариант, спуская руку от запястья к плечу по мере приобретения навыка.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[21]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 21.09.06 08:12
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    V>Цифры, сестра, цифры!


    Не вижу в этом ни малейшего смысла. Тебе больше занятся нечем?

    V>Т.е. вместо конкретики будем налегать на абстракционизм (по-сути, лепить отмазки)? Так и запишем...


    Я тебе вполне конкретно сказал, что ты ошибся. Или для тебя любые указания на твою неправоту — это абстракция?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[22]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 21.09.06 08:53
    Оценка: +1 :))) :))) :)))
    Здравствуйте, Дарней, Вы писали:

    V>>Т.е. вместо конкретики будем налегать на абстракционизм (по-сути, лепить отмазки)? Так и запишем...


    Д>Я тебе вполне конкретно сказал, что ты ошибся. Или для тебя любые указания на твою неправоту — это абстракция?


    Мужики, давайте так: кто первым опубликует видеоролик или набор фотографий, на которых он разбивает какой-нибудь твердый предмет (кирпичи, например, или доски, или бейсбольные биты, или стеклянные бутылки головой), тот и будет признан победителем. Ничья будет если опонет затем предоставит ролик, на котором будет запечатлено, как он выдерживает аналогичный по силе удар (например, раскалывает головой кирпич или стеклянную бутылку (пустую), или принимает на голень (бедро, предплечье, корпус) удар деревянным шестом, после которого шест ломается), либо демонстрируются способности уворачивания от подобных ударов, то будет защитана ничья. До момента предоставления следующих доказательств наличия сильного удара, а затем до предоставления доказательств возможности отражения/избежания подобного удара. И т.д. и т.п.

    Хотя я что-то про различные виды борьбы забыл, сорри. Так что можно присылать сьемки проведенных бросков, захватов, удержаний, болевых приемов и прочего. Если есть возможноть, присылайте что-нибудь из арсенала айки-до -- очень зрелищно выглядит.

    С определением личности на фотографии, конечно, будет не просто. Но у vdimas в профиле есть фото, к тому же его Гена Васильев опознать сможет. С Дарнеем сложнее, но тоже можно будет что-нибудь придумать.

    Тогда вашу виртуальную разборку интересно будет наблюдать. А то свелось все к обычному "Я дурак?" -- "А ты не дурак?" -- "Это я не дурак?"... Скучно, можно чего-нибудь повеселее придумать


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[23]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 21.09.06 10:07
    Оценка:
    Здравствуйте, eao197, Вы писали:

    мне, вообще говоря, пофиг.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re: Насколько важен синтаксис языка?
    От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
    Дата: 21.09.06 10:08
    Оценка: 2 (2) :)
    Здравствуйте, Курилка, Вы писали:

    К>Так вот — хотелось бы рассмотреть вопрос: насколько синтаксис языка определяет его удобство для использования?


    Нисколько не делает удобнее

    Корень зла таится в людях которые есть быдло и животные
    У каждого человека мышление уникальное. Человек выберет тот интрумент, который подходит больше всего. Т.е. вызывает меньше всего дискомфорта и одновременно позволяет максимально эффективно решить нужные проблемы.

    Люди не будут ломать свое мышление.
    Люди думают по разному — тип мышления у всех отличается. Одни и те же логическе рассуждения укладываются в голове совершенно по разному. Тем не менее у многих людй мысли формулируются очень похоже(но не одинаково !).

    Т.е. язык с определенным синтаксисом будет использоваться только той частью людй, которые имею сходное мышление с создателем этого языка.

    Итого — вопрос сводится к тому, насколько распространен тип мышления создателя(создателей) языка среди людей.
    Re[2]: Насколько важен синтаксис языка?
    От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
    Дата: 21.09.06 10:18
    Оценка: 1 (1) -4
    Здравствуйте, Plutonia Experiment, Вы писали:

    PE>Т.е. язык с определенным синтаксисом будет использоваться только той частью людй, которые имею сходное мышление с создателем этого языка.


    PE>Итого — вопрос сводится к тому, насколько распространен тип мышления создателя(создателей) языка среди людей.


    Кстати это могильная плита Неммерле и многих "академических" языков (т.е. мейнстримом не станут скорее всего).
    Слишком умные и уникальные люди создавали это язык что бы он стал массовым.
    Может и не совсем так, но на данном этапе Неммерле требудет совершенно иного подхода, нежели привычные паскале-с-образные языки.

    По этой причине Паскаль похоронил Модула, но слил C, С++ и С#. Т.е. никаких преимуществ не дал. По этой причине C# вытеснил Яву на Виндовой платформе.
    Это одинаковые языки. Среди них со временем останется один.
    Re[24]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 21.09.06 12:00
    Оценка: :))
    Здравствуйте, Дарней, Вы писали:

    Д>мне, вообще говоря, пофиг.


    Продул!!!



    Вообще фигня это все, детские игрушки. Я потому и проголосовал за отделение темы.
    Но увидеть виртуальный мордобой на форуме RSDN было бы интересно. Может быть vdimas поддержит, в виде боя с тенью или ката?

    В любом случае всем участникам потосовки за мой счет


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[3]: Насколько важен синтаксис языка?
    От: Lazy Cjow Rhrr Россия lj://_lcr_
    Дата: 21.09.06 12:42
    Оценка: +1 :)
    Plutonia Experiment,

    PE>По этой причине Паскаль похоронил Модула, но слил C, С++ и С#. Т.е. никаких преимуществ не дал. По этой причине C# вытеснил Яву на Виндовой платформе.

    PE>Это одинаковые языки. Среди них со временем останется один.

    Ужас. Не хочу учить китайский!!!!!!
    quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
    Re[4]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 21.09.06 12:45
    Оценка:
    Здравствуйте, Lazy Cjow Rhrr, Вы писали:

    LCR>Ужас. Не хочу учить китайский!!!!!!


    Оптимист учит английский язык.
    Пессимист -- китайский.
    Реалист -- автомат Калашникова.


    Будь реалистом!


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[4]: Насколько важен синтаксис языка?
    От: Mamut Швеция http://dmitriid.com
    Дата: 21.09.06 12:58
    Оценка:
    PE>>По этой причине Паскаль похоронил Модула, но слил C, С++ и С#. Т.е. никаких преимуществ не дал. По этой причине C# вытеснил Яву на Виндовой платформе.
    PE>>Это одинаковые языки. Среди них со временем останется один.

    LCR>Ужас. Не хочу учить китайский!!!!!!


    Я слышал, что грамматика китайского на самом деле легкая. Даже иероглифы можно выучить (он строятся из небольшого набора стандартных элементов). Но вот произношение — это уже да, это (_._)
    ... << RSDN@Home 1.2.0 alpha rev. 655>>


    dmitriid.comGitHubLinkedIn
    Re[5]: Насколько важен синтаксис языка?
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 21.09.06 13:15
    Оценка: 21 (2) +1 :)
    Здравствуйте, Mamut, Вы писали:

    LCR>>Ужас. Не хочу учить китайский!!!!!!


    M>Я слышал, что грамматика китайского на самом деле легкая. Даже иероглифы можно выучить (он строятся из небольшого набора стандартных элементов). Но вот произношение — это уже да, это (_._)


    Поэт, пожирающий львов в каменном логове
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[25]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 21.09.06 16:00
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>Продул!!!


    глупо это всё.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[5]: Контрольную устроить, что-ли?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 21.09.06 18:46
    Оценка:
    Здравствуйте, Mink, Вы писали:

    M>Читаю эту ветку и постоянно вспоминаю слова одного нашего препода, который еще на первом курсе сказал нам: "Об определениях не спорят, о них договариваются."


    Разумный мужик был у вас "препод". Повезло вам.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[2]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 21.09.06 18:46
    Оценка: :))) :))) :))
    Здравствуйте, Pavel Dvorkin, Вы писали:

    PD>(В скобках. А Вы не замечали, что даже и без всякой эмиграции, у нас (я имею в виду ИТ-работников) от большого общения с англоязычной литературой порой появляется желание сказать что-то по-русски "с английским акцентом"


    Нет, никогда. В словах об аплекациях имплементированных мною лично, все и так кульно.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[3]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 21.09.06 18:46
    Оценка:
    Здравствуйте, Plutonia Experiment, Вы писали:

    PE>Кстати это могильная плита Неммерле и многих "академических" языков (т.е. мейнстримом не станут скорее всего).

    PE>Слишком умные и уникальные люди создавали это язык что бы он стал массовым.
    PE>Может и не совсем так, но на данном этапе Неммерле требудет совершенно иного подхода, нежели привычные паскале-с-образные языки.

    Тут есть железный аргумент. Немерле же поляки делали. И русские дописывают. О каком уме тут можно говорить?

    PE>По этой причине Паскаль похоронил Модула, но слил C, С++ и С#. Т.е. никаких преимуществ не дал. По этой причине C# вытеснил Яву на Виндовой платформе.

    PE>Это одинаковые языки. Среди них со временем останется один.

    Тут у вас не увязочка. C# точно более сложный язык черм Ява и в общем-то как минимум синтаксически сложнее С++. Как же он кого-то смог вытеснить?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[5]: Контрольную устроить, что-ли?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 21.09.06 23:01
    Оценка:
    Здравствуйте, Mink, Вы писали:

    K>>Я там изложил свою точку зрения на предназначение терминологии и объяснил, почему апелляция к общепринятости в данном случае вполне корректна.

    M>Читаю эту ветку и постоянно вспоминаю слова одного нашего препода, который еще на первом курсе сказал нам: "Об определениях не спорят, о них договариваются."

    Интересно, а с вами он об определениях договаривался?
    << Под музыку: silent >>
    << При помощи Януса: 1.2.0 alpha rev. 650 >>
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[4]: Насколько важен синтаксис языка?
    От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
    Дата: 22.09.06 04:26
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    PE>>По этой причине Паскаль похоронил Модула, но слил C, С++ и С#. Т.е. никаких преимуществ не дал. По этой причине C# вытеснил Яву на Виндовой платформе.

    PE>>Это одинаковые языки. Среди них со временем останется один.

    VD>Тут у вас не увязочка. C# точно более сложный язык черм Ява и в общем-то как минимум синтаксически сложнее С++. Как же он кого-то смог вытеснить?


    Код на С# набивать в разы проще чем на С++. Я вернулся с C# на С++ и прочувствовал это множество раз.
    C# не на много сложнее Явы.
    Re[6]: Контрольную устроить, что-ли?
    От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
    Дата: 22.09.06 04:30
    Оценка: +2
    Здравствуйте, Геннадий Васильев, Вы писали:

    K>>>Я там изложил свою точку зрения на предназначение терминологии и объяснил, почему апелляция к общепринятости в данном случае вполне корректна.

    M>>Читаю эту ветку и постоянно вспоминаю слова одного нашего препода, который еще на первом курсе сказал нам: "Об определениях не спорят, о них договариваются."

    ГВ>Интересно, а с вами он об определениях договаривался?


    Преподаватель предлагает свои. Не хочешь — не пользуйся. Но на экзамене будь добр сделать так, что бы преподаватель понял твои определения.

    По моему 99% проблем в спорах из за терминологии. Договориться — значит прийти к общему знаменателю, хотя бы на время спора, что бы саму проблему то решить.
    Re[5]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 23.09.06 01:13
    Оценка:
    Здравствуйте, Plutonia Experiment, Вы писали:

    PE>Код на С# набивать в разы проще чем на С++. Я вернулся с C# на С++ и прочувствовал это множество раз.


    Дык сложность языка, и сложность программирования на нем это совсем разные вещи.

    PE>C# не на много сложнее Явы.


    2.0 сложнее. А 3.0 будет сильно сложнее. Но говорят что в Яве 1.6 тоже появятся замыкания и функции высшего порядка, но это по слухм.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[6]: Насколько важен синтаксис языка?
    От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
    Дата: 23.09.06 05:41
    Оценка: +1
    Здравствуйте, VladD2, Вы писали:

    PE>>Код на С# набивать в разы проще чем на С++. Я вернулся с C# на С++ и прочувствовал это множество раз.


    VD>Дык сложность языка, и сложность программирования на нем это совсем разные вещи.


    Я говорю о сложности программирования на конкретном языке в первую очередь.

    На счет простоты самого С++ сильно сомневаюсь.
    До сих пор не существует ни одного компилятора который удовлетворяет хотя бы одному стандарту.
    Максимальное соответсвие не выше 90%. Последний стандарт вышел черт знает когда, однако компиляторов все не появится. Это от простоты языка, не иначе

    Вот задачка тебе — найди ошибку
    char* a = GetString();
    int i;
    
    a[i] = 'i';
    i[a] = 'a';
    Re[6]: Контрольную устроить, что-ли?
    От: Mink Россия  
    Дата: 23.09.06 09:56
    Оценка: +1 :)))
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Здравствуйте, Mink, Вы писали:


    K>>>Я там изложил свою точку зрения на предназначение терминологии и объяснил, почему апелляция к общепринятости в данном случае вполне корректна.

    M>>Читаю эту ветку и постоянно вспоминаю слова одного нашего препода, который еще на первом курсе сказал нам: "Об определениях не спорят, о них договариваются."

    ГВ>Интересно, а с вами он об определениях договаривался?


    А как же. Он предлагал определение, мы соглашались его использовать
    Видимо потому, что по простоте душевной не подозревали, что нельзя "подхватывать распространённое определение без его критической оценки." А то бы обязательно поспорили с ним. Действительно, с чего это аналитической функцией назвали ту, что в ряд Тейлора раскладывается. Я вот сейчас уже чувствую врожденную некорректность этого определения.
    Сила, она в ньютонах
    Re[7]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 24.09.06 21:44
    Оценка: :))
    Здравствуйте, Plutonia Experiment, Вы писали:

    PE>На счет простоты самого С++ сильно сомневаюсь.

    PE>До сих пор не существует ни одного компилятора который удовлетворяет хотя бы одному стандарту.

    Дык это не из-за сложности. Это из-за большого количества неопредленностей.

    PE>Вот задачка тебе — найди ошибку

    PE>
    PE>char* a = GetString();
    PE>int i; // не инициализированная переменная.
    
    PE>a[i] = 'i';
    PE>i[a] = 'a'; // индексация целочисленной переменной символом.
    PE>


    Я такую фигню вижу сразу. Все же 10 лет с С/С++ их не пропьешь.
    Но согласен приколы неприятные. Но на самом деле еще более опасная ошибка здесь заключается в том, что совершенно не ясно что возращает функция GetString()? Ведь длинна строки неизвесна, да и не ясно рассчитывал ли автор функции на то, что возвращаемое значение будут менять?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[8]: Насколько важен синтаксис языка?
    От: VoidEx  
    Дата: 24.09.06 22:19
    Оценка: +1 :))
    Здравствуйте, VladD2, Вы писали:

    PE>>
    PE>>i[a] = 'a'; // индексация целочисленной переменной символом.
    PE>>


    А в чем ошибка?
    Re[9]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 24.09.06 23:57
    Оценка:
    Здравствуйте, VoidEx, Вы писали:

    PE>>>
    PE>>>i[a] = 'a'; // индексация целочисленной переменной символом.
    PE>>>


    VE>А в чем ошибка?


    Если закрыть глаза на то, что в i к этому моменту лежит мусор, то все равно смысла индексировать памать по целочисленной переменной не много.

    Реально обычно такие ошибки получаются из-за опечаток. И не опытный программист может часами тупо бродить под отладчиком не понимая что просходит.

    Вообще за такую эквилибристику (если она конечно специально влеплена) с адресной арифметикой в приличном обществе бьют железной линейкой по пальцам. А то и не линейкой и по значительно более важным органам.

    Если уж выёживаться с адресной арифметикой, то хотч бы воспользоваться для этого типизированным указателем.

    А вообще, разумно спроктированный язык просто не должен был бы дать совершить таких ошибок.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[10]: Насколько важен синтаксис языка?
    От: FR  
    Дата: 25.09.06 05:18
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, VoidEx, Вы писали:


    PE>>>>
    PE>>>>i[a] = 'a'; // индексация целочисленной переменной символом.
    PE>>>>


    VE>>А в чем ошибка?


    VD>Если закрыть глаза на то, что в i к этому моменту лежит мусор, то все равно смысла индексировать памать по целочисленной переменной не много.


    Влад вспомни массивы в си это твой любимый сахар, поэтому индексация будет довольно странная, не такая как ты думаешь, хотя ошибка конечно есть и ты ее назвал i не определена
    Re[8]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 25.09.06 08:24
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    PE>>
    PE>>i[a] = 'a'; // индексация целочисленной переменной символом.
    PE>>


    VD>Я такую фигню вижу сразу. Все же 10 лет с С/С++ их не пропьешь.


    Это уже даже не смешно.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[8]: Насколько важен синтаксис языка?
    От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
    Дата: 25.09.06 11:07
    Оценка: 1 (1)
    Здравствуйте, VladD2, Вы писали:

    PE>>Вот задачка тебе — найди ошибку

    PE>>
    PE>>char* a = GetString();
    PE>>int i; // не инициализированная переменная. 
    // это уже не в счет - синтаксис тут ни при чем.
    
    PE>>a[i] = 'i';
    PE>>i[a] = 'a'; // индексация целочисленной переменной символом.
    // На самом деле ошибки нет. Это я тебе подкузьмил на счет простоты синтаксиса. Когда со мной 
    PE>>


    VD>Я такую фигню вижу сразу. Все же 10 лет с С/С++ их не пропьешь.


    дело в том, что в приведеном примере a[i] эквивалентно i[a]. Вот такой он, С++.
    Re[10]: Насколько важен синтаксис языка?
    От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
    Дата: 25.09.06 11:09
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Если уж выёживаться с адресной арифметикой, то хотч бы воспользоваться для этого типизированным указателем.


    VD>А вообще, разумно спроктированный язык просто не должен был бы дать совершить таких ошибок.


    Ошибок и нет кроме отсутствия инициалиации переменной i
    Re[11]: Насколько важен синтаксис языка?
    От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
    Дата: 25.09.06 11:12
    Оценка: :)
    Здравствуйте, FR, Вы писали:

    VD>>Если закрыть глаза на то, что в i к этому моменту лежит мусор, то все равно смысла индексировать памать по целочисленной переменной не много.


    FR>Влад вспомни массивы в си это твой любимый сахар, поэтому индексация будет довольно странная, не такая как ты думаешь, хотя ошибка конечно есть и ты ее назвал i не определена


    Индексация действительно странная
    Я люблю людей обманывать — прошу найти ошибку там где ее нет.
    Re[9]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 25.09.06 15:38
    Оценка: :))
    Здравствуйте, Plutonia Experiment, Вы писали:

    PE>дело в том, что в приведеном примере a[i] эквивалентно i[a]. Вот такой он, С++.


    ОК, я действительно попался на удочку подумав, что вместо a там 'a' или *a. Только С++ тут во общем-то не причем. Банальное мошенничество основанное на применении схожих имен переменных.

    Но лично я бы людей написавших такой код по головек не погладил бы.
    А что если завтра ты решишь заменить char* на std::string или еще что? В общем, таких веселых товарищей надо гнать в шею пока они не заполнили подобными приколами весь код.

    Ну, а неинициализированной переменной может оказаться достаточно, чтобы найти себе работу на пару ночей. Хотя конечно сейчас компиляторы продвинулись, и возможно в столь примитивном случае некоторые из них дадут предупреждение.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[10]: Насколько важен синтаксис языка?
    От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
    Дата: 25.09.06 19:19
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    PE>>дело в том, что в приведеном примере a[i] эквивалентно i[a]. Вот такой он, С++.


    VD>ОК, я действительно попался на удочку подумав, что вместо a там 'a' или *a. Только С++ тут во общем-то не причем. Банальное мошенничество основанное на применении схожих имен переменных.


    Это не схожие имена. Это массивы позволяют с собой такое вытворять.

    VD>Но лично я бы людей написавших такой код по головек не погладил бы.

    Стоит лишь глаза и четырех пальцев как минимум

    VD>А что если завтра ты решишь заменить char* на std::string или еще что? В общем, таких веселых товарищей надо гнать в шею пока они не заполнили подобными приколами весь код.


    на стд-стринг я точно не заменю. Скорее на CComBSTR или простой CString из MFC 4.2

    VD>Ну, а неинициализированной переменной может оказаться достаточно, чтобы найти себе работу на пару ночей. Хотя конечно сейчас компиляторы продвинулись, и возможно в столь примитивном случае некоторые из них дадут предупреждение.


    Специально для тебя
    http://blogs.gotdotnet.ru/personal/Hollander/PermaLink.aspx?guid=4b9b3297-d187-44fd-bd29-3b6e6cd34bed
    Re[22]: Насколько важен синтаксис языка?
    От: vdimas Россия  
    Дата: 26.09.06 07:04
    Оценка:
    Здравствуйте, Дарней, Вы писали:


    V>>Цифры, сестра, цифры!


    Д>Не вижу в этом ни малейшего смысла.


    Это расходится с твоим заявлением ниже.

    Д>Я тебе вполне конкретно сказал, что ты ошибся. Или для тебя любые указания на твою неправоту — это абстракция?


    А ну да... если был не прав, то выходит что:
    — ты на улице хамишь так же как в форуме
    — за год качалки ты достиг большего, чем достигают профи за 15 лет занятий единоборствами

    Остаюсь при своем мнении, что бесконечно глупы оба варианта...
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[23]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 26.09.06 08:04
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    V>- ты на улице хамишь так же как в форуме


    Я хамлю тогда, когда начинают хамить мне. Неважно, на улице или на форуме. А ты делаешь по другому?
    Что касается высказывания о качестве твоего сообщения, то могу сказать совершенно точно — то же самое я сказал бы любому своему коллеге, если бы он начал нести нечто такое же невразумительное. В ответ на что ты начинаешь какие-то попахивающие уличной гопотой рассуждения о том, что я рискнул бы сделать "при личной встрече" а что нет, и вообще разводить безобразную склоку.
    Я уж не говорю о том, что обсуждение чьих-то личных качеств вообще запрещено правилами, это просто модераторы спят.

    V>- за год качалки ты достиг большего, чем достигают профи за 15 лет занятий единоборствами


    Нет, конечно. Я прекрасно знаю уровень достижений профи. Но меня этот факт не волнует — они обычно не лезут хамить всем подряд, как ты совершенно точно заметил.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[17]: Насколько важен синтаксис языка?
    От: vdimas Россия  
    Дата: 26.09.06 13:12
    Оценка: +1
    Здравствуйте, FDSC, Вы писали:


    FDS>А почему "дорогие" специалисты не могут объединиться и сделать стартап?


    САМЫЕ дорогие специалисты на сегодня — это те, которые умеют совмещать несовместимое, которые работают на стыке множества технологий и прекрасно ими владеют. Например, экономят компаниям десятки миллионов, продлевая жизнь системам 20-летней давности (весьма надежным), заставляя их работать в интеграции с современными ср-вами. Параллельная "дорогая" ветвь спецов — это уже менеджерский состав, и обсуждать их неохота. Так же иногда неплохо оплачиваются конструктора-архитекторы, но опять же — преимущественно в больших конторах.

    Получается что востребованность "самых-самых" спецов лежит далеко от стартапов. Да и зачастую для стартапов не требуются их знания, лежащие на стыке многих технологий. Стартапу требуетс обычно напротив — нечто весьма узконишевое и востребованное прямо сегодня, дабы хватидло денег на подъем "темы"... Ну и, разумеется, сама "тема". В общем, для крутого спеца самостоятельно рисовать некий отдельный продукт, доводя его до рыночного состояния — это вроде как деградация. Такие дела.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[6]: Дополнение
    От: vdimas Россия  
    Дата: 26.09.06 13:12
    Оценка: 268 (20) +4
    Здравствуйте, Kisloid, Вы писали:


    K>Опять началось, мы "элита", круче нас бывают только яйца, а всем остальным программирование не осилить и даже и не пытайтесь. Если бы у всех программистов было такое мнение, программисты бы вымерли как вид.


    А они и вымирают... У меня есть база из более сотни резюме, десятки интервьюировал... Было очень печально, знаешь ли. В то самое "наше время", когда та самая трава была зеленее, в IT шли именно фанаты, у нас на потоке из 100 человек было около 20-ти, которые очень неплохими спецами становились к 5-му году обучения. Сейчас из того же потока выходит в лучшем случае 1-2 "увлеченных"... Остальные воспринимают IT-отрасль как нечто обыденное, типа как мы в дестве не удивлялись, почему показывает телевизор.

    1-2 из 100 — это не просто мало, это, к сожалению, ниже той самой "критической массы". Ниже той отметки, когда создается сообщество людей, объединенных по интересам, где рулит здоровая конкуренция, где студенты обучают и стимулируют друга на порядок лучше всякого института. В общем, кому повезло пройти через это в ВУЗах, тот понимает.




    В 9-м классе к нам привезли "Корветы". Я купил книжку по Бейсику, посидел немного в командной строке Бейсика и... потерял покой и сон на несколько дней. К тому времени я уже успел увлечься цифровой электроникой, знал как работают регистры там, автоматы и прочее. Не только собирал чужие схемки, но и составлял уже свои... Но я даже боялся себе представить сложность микросхемы, которая так "умно" общалась бы со мной в этой командной строке. Купил книгу по устройству ЭВМ, проглотил за раз и ПОНЯЛ (тут нужен смайлик, характеризующий нирвану и обалдение одновременно). И мне полегчало, ибо представить автомат (процессор) который выполняет только операции типа сложить/отнять/сравнить/перейти представлялось куда более простой задачей. Следующим естественным шагом была сборка "Ленинград-1" (советский ZX-Spectrum), зачитка и ручной (!!!) дизасемблинг ПЗУ... Ибо все-равно как-то с трудом представлялось, что с помощью таких простых операций процессора можно получать такие сложные в итоге программы, типа интерпретатора Бейсика. Попросил у мамы-медсестры "бесконечную" обойму бумаги от кардиографа, взял таблицу кодов, и примерно 4 метра бумаги надезисассемблировал вручную, пока не понял принцип... (Кстати, второй моей программой на Бейсике была попытка написать дизассемблер... про существование готовых узнал чуть позже, а потому свой остался недописанным)

    И так во всем, все последующие годы. А сейчас ребятам все это СКУЧНО. Именно, откровенно скучно, хотя возможностей _несравненно_ больше.




    Вот тут многие придерживаются мнения, что обучать IT надо сверху-вниз, сначала давать абстракции, потом конкретные технологии. Или перечисляли, что должен знать современных архитектор на какой-либо платформе... Бины там, Джары, Джи-Боссы, XML и прочее... Фигня это все. Архитектор должен отчетливо представлять, зачем он вообще разрабатывает системы, и как преодолевать все те трудности, что встают на пути решения конкретных задач.

    И тут надо не список технологий давать, как этапы роста сознания, а нечто вроде последовательности собственных открытий и внутренних ощущений, которые потом будут влиять на принимаемые решения, типа:
    — сначала понял, что программы — дело сложное
    — потом опять понял, что все оказалось еще на порядки сложнее
    — потом понял, что оно всегда глючит
    — потом понял, что глючит не только у тебя, но и у всех... и где-то полегчало
    — потом понял, что твои программы должны работать в окружении десятков других программ... вспомнил, что все они априори глючны — и снова становишься мрачнее (взрослеешь)
    — потом понял, что "надежная связь" — это несочетаемый набор звуков, в природе не встречается
    — потом вспомнил, что заказчикам на этот факт наплевать
    — потом понял, что увлекся фреймворками, а воз и ныне там (решение конкретных задач)
    — потом понял, что ни на что никогда не хватает ни времени, ни ресурсов... с болью в сердце понимаешь как "ПРАВИЛЬНО" расставлять приоритеты... короче, обрастаешь цинизмом как мхом... всегда четко знаешь, что гонишь лажу (на 14-й год работы!), но в душе по детски надеешься, что "когда-нибудь" у меня будет возможность все делать "как надо"...
    — потом понимаешь, что чем дальше, тем меньше шансов застать эти светлые времена... Толпы "современных программистов" требуют слишком много внимания, а других нет и не предвидится И весь этот описанный алгоритм они проходить совершенно не хотят (чуть что — рыскают носом в и-нете, куда бы переместить свою пятую точку в более спокойное место), им даже наплевать на факт существования каких-там ступеней роста... Ты им эти тонкости построения современного мира жуешь и в рот ложишь, и то, не все глотают... И ты за них потом ищешь их баги, причиной которых чаще всего является не отсутсвие знаний по конкретной технологии, а искаженное представление о современных системах в целом.

    Пользуясь случаем отмечу, что последний пункт — объяснение того, почему в спорах, типа "надо ли все знать и понимать до самого низа, и не является ли оперирование абстракциями достаточными", я четко придерживаюсь позиции "1-НАДО, 2-НЕ ДОСТАТОЧНО". Даже пользуясь современными "полностью абстрактными" ФП, надо четко представлять, как оно работает, дабы писать адекватные программы. Даже в Прологе, вершине всех абстракций, надо четко понимать, почему можно получить прирост быстродействия на порядок, если просто в системе правил поменять пару из них местами (хотя с математической точки зрения ничего не меняется)...
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[6]: Дополнение
    От: _rasta  
    Дата: 26.09.06 13:40
    Оценка: 6 (1)
    Здравствуйте, Kisloid, Вы писали:

    K>Опять началось, мы "элита", круче нас бывают только яйца, а всем остальным программирование не осилить и даже и не пытайтесь. Если бы у всех программистов было такое мнение, программисты бы вымерли как вид.


    между прочим о видах. перефразировав одного дядьку могу сказать что "виды" делятся на два: "писать чтобы жить" и "жить чтобы писать". так вот один гораздо малочисленнее другого. естественно имхо.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[7]: Дополнение
    От: Mamut Швеция http://dmitriid.com
    Дата: 26.09.06 14:01
    Оценка:
    K>>Опять началось, мы "элита", круче нас бывают только яйца, а всем остальным программирование не осилить и даже и не пытайтесь. Если бы у всех программистов было такое мнение, программисты бы вымерли как вид.

    _>между прочим о видах. перефразировав одного дядьку могу сказать что "виды" делятся на два: "писать чтобы жить" и "жить чтобы писать". так вот один гораздо малочисленнее другого. естественно имхо.


    Блин. Только вчера товарищ спросил меня — "ты живешь для того, чтобы программировать, или программируешь для того, чтобы жить?" И добавил, что он программирует для nuj? чтобы жить, то есть деньги зарабатывать. А читать там умные книжки (я как раз обдумывал покупку SICP в бумажном варианте) — это не для нас, все можно и на практике выучить.
    ... << RSDN@Home 1.2.0 alpha rev. 655>>


    dmitriid.comGitHubLinkedIn
    Re[3]: Вопрос к Sinclair
    От: fmiracle  
    Дата: 26.09.06 15:47
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>Растение называется "Сосна сибирская кедровая (Pinus sibirica Du Tour)" так что кедровые орешки вполне правильное, но не совсем точное название


    Ну, мясо морской свинки нельзя назвать свининой, а лепестки тигровой лилии (Lilium tigrinum) так же не прокатят как шкура тигра, даже с натяжкой.

    Это я к тому, что "кедровая" — только дополнительное описание — "похожая на кедр", а главное все же — что это сосна.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[4]: Вопрос к Sinclair
    От: FR  
    Дата: 26.09.06 16:09
    Оценка:
    Здравствуйте, fmiracle, Вы писали:

    F>Ну, мясо морской свинки нельзя назвать свининой, а лепестки тигровой лилии (Lilium tigrinum) так же не прокатят как шкура тигра, даже с натяжкой.


    F>Это я к тому, что "кедровая" — только дополнительное описание — "похожая на кедр", а главное все же — что это сосна.


    Вообще-то настоящий кедр тоже ближайший родственник сосны (или даже подвид), так что не надо сильно обобщать
    Re[24]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 28.09.06 21:29
    Оценка: +1
    Здравствуйте, Дарней, Вы писали:

    Д>Я хамлю тогда, когда начинают хамить мне. [...]


    Д>Нет, конечно. Я прекрасно знаю уровень достижений профи. Но меня этот факт не волнует — они обычно не лезут хамить всем подряд, как ты совершенно точно заметил.


    Твоими бы устами да мёд пить:

    V>Преимущество в легкости освоения и дешевизне интеграции.
    Д>у кого преимущество? перед кем? интеграции с чем?
    высказался, как в лужу пукнул


    Или я опять какой-то очень-очень обыденной и очень-очень логичной логики в твоих речах не схватываю, или я сильно отстал от нынешних "стандартов общения", или... Дальше мысль останавливается. (c)
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[25]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 29.09.06 02:58
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>

    Д>>у кого преимущество? перед кем? интеграции с чем?


    у тебя какие-то проблемы с интерпретацией этих слов?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[22]: Оффтопик: Nemerle
    От: konsoletyper Россия https://github.com/konsoletyper
    Дата: 01.10.06 05:47
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Вот рельный код написанный мной пару дней назад:

    VD>[c#]
    VD>/// Remove extension methods defined in code (not external).
    VD>public RemoveInternalExtensionMethods() : void
    VD>{
    VD> foreach ((name, lst) when lst.Exists(_ is MethodBuilder) in _extension_methods.KeyValuePairs)
    VD> {
    VD> def newList = lst.RevFilter (x => !(x is MethodBuilder));

    VD> if (newList is [])

    VD> _ = _extension_methods.Remove (name);
    VD> else
    VD> _extension_methods[name] = newList;
    VD> }
    VD>}

    А нет ли в Nemerle возможности составить ленивый list comprehension? Тогда можно было бы написать list comprehension и пройтись по нему foreach'ем. ИМХО, так красивее.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[23]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 01.10.06 15:21
    Оценка:
    Здравствуйте, konsoletyper, Вы писали:

    K>А нет ли в Nemerle возможности составить ленивый list comprehension? Тогда можно было бы написать list comprehension и пройтись по нему foreach'ем. ИМХО, так красивее.


    Зачем здесь леливость?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[24]: Оффтопик: Nemerle
    От: konsoletyper Россия https://github.com/konsoletyper
    Дата: 01.10.06 17:12
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    K>>А нет ли в Nemerle возможности составить ленивый list comprehension? Тогда можно было бы написать list comprehension и пройтись по нему foreach'ем. ИМХО, так красивее.


    VD>Зачем здесь леливость?


    А затем, чтобы не тратить попусту память. Сделать при помощи list comprehension ленивый список (поток по схемовской терминологии) и перебирать его. Вообще-то foreach в немерле — это и есть своеобразный ленивый list comprehension. Но всё-таки сам list comprehension выглядит посиматичнее.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[26]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 01.10.06 18:38
    Оценка: +4
    Здравствуйте, Дарней, Вы писали:

    ГВ>>

    Д>>>у кого преимущество? перед кем? интеграции с чем?


    Д>у тебя какие-то проблемы с интерпретацией этих слов?


    У меня проблема с интерпретацией твоих слов: "высказался, как в лужу пукнул" иначе, нежели как бытовое хамство, снобизм и банальное неумение пользоваться письменным словом. Ещё вопросы есть?
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[7]: Дополнение
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 01.10.06 18:54
    Оценка:
    Здравствуйте, vdimas, Вы писали:

    K>>Опять началось, мы "элита", круче нас бывают только яйца, а всем остальным программирование не осилить и даже и не пытайтесь. Если бы у всех программистов было такое мнение, программисты бы вымерли как вид.


    V>А они и вымирают... У меня есть база из более сотни резюме, десятки интервьюировал... Было очень печально, знаешь ли. В то самое "наше время", когда та самая трава была зеленее, в IT шли именно фанаты, у нас на потоке из 100 человек было около 20-ти, которые очень неплохими спецами становились к 5-му году обучения. Сейчас из того же потока выходит в лучшем случае 1-2 "увлеченных"... Остальные воспринимают IT-отрасль как нечто обыденное, типа как мы в дестве не удивлялись, почему показывает телевизор.


    Дим, как только вокруг нашего дела стали крутиться бабки (даже не так: БАБКИ), сюда столько мусора натащило и ещё натащит, что мама, не горюй.

    Меня, в принципе, одно успокаивает. Сколько бы всяческая шелупонь не надувала щёки, в любом случае сложность задачи и сложность её реализации никуда не денутся — хоть ты галстук надень, хоть распишись в корпоративной верности до третьего колена, хоть сертификатами, как обоями обклейся. Отсюда, собственно, принципиальная невозможность свести программирование к обезъянничанью, как бы этого кому бы то ни было не хотелось. Ну не полетит самолёт с крыльями от Ан-2 (для дешевизны) и двигателем от Ту-144 (для скорости)...

    V>1-2 из 100 — это не просто мало, это, к сожалению, ниже той самой "критической массы". Ниже той отметки, когда создается сообщество людей, объединенных по интересам, где рулит здоровая конкуренция, где студенты обучают и стимулируют друга на порядок лучше всякого института. В общем, кому повезло пройти через это в ВУЗах, тот понимает.


    Я понимаю, в частности.

    PS.: Проголосовал за выделение твоего сообщения в отдельную ветку. 2All: присоединяйтесь.
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[27]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 02.10.06 02:41
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

    А что ты скажешь про вот такое
    Автор: vdimas
    Дата: 07.09.06
    невразумительное сообщение, многоуважаемый знаток этикета и чужих способностей?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[28]: Насколько важен синтаксис языка?
    От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
    Дата: 02.10.06 03:48
    Оценка:
    Здравствуйте, Дарней, Вы писали:

    Д>А что ты скажешь про вот такое
    Автор: vdimas
    Дата: 07.09.06
    невразумительное сообщение, многоуважаемый знаток этикета и чужих способностей?


    Я не вижу в нём ничего невразумительного. Но по-моему, если уж тебе чего-то не понятно, то можно переспросить автора и без сопутствующей демонстрации навыков владения заборной лексикой.
    Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
    P.S.: Винодельческие провинции — это есть рулез!
    Re[29]: Насколько важен синтаксис языка?
    От: Дарней Россия  
    Дата: 02.10.06 05:18
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:

    ГВ>Я не вижу в нём ничего невразумительного.


    Ну тогда расскажи — у кого преимущество? перед кем? интеграции с чем?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Всех излечит, исцелит
    добрый Ctrl+Alt+Delete
    Re[25]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 02.10.06 09:59
    Оценка:
    Здравствуйте, konsoletyper, Вы писали:

    K>А затем, чтобы не тратить попусту память. Сделать при помощи list comprehension ленивый список (поток по схемовской терминологии) и перебирать его. Вообще-то foreach в немерле — это и есть своеобразный ленивый list comprehension. Но всё-таки сам list comprehension выглядит посиматичнее.


    Здесь никакой памяти зря не тратится. Надо все таки понимать как работает GC. А вот зачем лишнее процессорное время тратить не ясно.

    Ленивость можно достичь и специальным макросом Lazy. Вот только тут это совершенно не нужно. Здесь даже промежуточных объектов практически не создается (елси не счиать сам итератор). Список обрабатывается полность. Смысл в ленивости ровно нулевой.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[26]: Оффтопик: Nemerle
    От: konsoletyper Россия https://github.com/konsoletyper
    Дата: 02.10.06 16:20
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, konsoletyper, Вы писали:


    K>>А затем, чтобы не тратить попусту память. Сделать при помощи list comprehension ленивый список (поток по схемовской терминологии) и перебирать его. Вообще-то foreach в немерле — это и есть своеобразный ленивый list comprehension. Но всё-таки сам list comprehension выглядит посиматичнее.


    VD>Здесь никакой памяти зря не тратится. Надо все таки понимать как работает GC. А вот зачем лишнее процессорное время тратить не ясно.


    Именно это я имел в виду. Зачем зря нагружать GC?

    VD>Ленивость можно достичь и специальным макросом Lazy. Вот только тут это совершенно не нужно. Здесь даже промежуточных объектов практически не создается (елси не счиать сам итератор). Список обрабатывается полность. Смысл в ленивости ровно нулевой.


    Может не совсем понятно. Попытаюсь объяснить. Вместо чего-то вроде:

    foreach (x when x > 5 in list)
    {
        doSomething();
    }


    мне приятнее запись:

    foreach (x in [e | e in list, e > 5])
    {
        doSomething();
    }


    Не знаю, стоит ли бить за это по рукам. Просто в более чистых ФЯ я бы использовал map и локальную функцию, чтобы не писать каждый раз ненужную рекурсию. А Немерле более императивный, потому в нём следует писать по-другому. Однако, если есть вохможность создать ленивый list comprehension, то первый и второй фрагменты скомпилировались в идентичный код. Тогда почему бы не использовать вторую запись? Или даже
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[27]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 02.10.06 17:45
    Оценка:
    Здравствуйте, konsoletyper, Вы писали:

    VD>>Здесь никакой памяти зря не тратится. Надо все таки понимать как работает GC. А вот зачем лишнее процессорное время тратить не ясно.


    K>Именно это я имел в виду. Зачем зря нагружать GC?


    Мне кажется, что ты не понимашь ситуации. Здесь вообще ЖЦ не работает. Да и если бы работал, то все равно метрвые объекты ничего не стоят.

    K>Может не совсем понятно. Попытаюсь объяснить. Вместо чего-то вроде:


    K>
    K>foreach (x when x > 5 in list)
    K>{
    K>    doSomething();
    K>}
    K>


    K>мне приятнее запись:


    K>
    K>foreach (x in [e | e in list, e > 5])
    K>{
    K>    doSomething();
    K>}
    K>


    K>Не знаю, стоит ли бить за это по рукам. Просто в более чистых ФЯ я бы использовал map и локальную функцию, чтобы не писать каждый раз ненужную рекурсию. А Немерле более императивный, потому в нём следует писать по-другому.


    Вообще-то ты просто не понял сути кода. Он не так прост как кажется. В нем происходит обновление хэш-таблицы. Это в принципе императивное действие. Причем оно усугубляется тем, что итератор хэш-таблиц не терпит изменения. Так вот обращение к свойству KeyValuePairs создает массив с копией элементов в следствии чего эта прблема исчезает.

    Использовать лист компрехэншон конечно можно, но в данном случае он мало что дал бы и мне кажется попродил бы более сложный код.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[28]: Оффтопик: Nemerle
    От: konsoletyper Россия https://github.com/konsoletyper
    Дата: 02.10.06 19:50
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    K>>Именно это я имел в виду. Зачем зря нагружать GC?


    VD>Мне кажется, что ты не понимашь ситуации. Здесь вообще ЖЦ не работает. Да и если бы работал, то все равно метрвые объекты ничего не стоят.


    Странно. Мне казалось, что при обработке list comprehension создаётся набор пар в куче. А где же ещё?

    Много мёртвых объектов просто напросто провоцируют частое срабатываение GC. А это значит нужно пройтись по графу объектов, затем делать дефрагментацию кучи. Т.е. так и так получаем доп. нагрузку, хотя и относительно небольшую в случае с мёртвыми объектами.

    [skip]

    VD>Вообще-то ты просто не понял сути кода. Он не так прост как кажется. В нем происходит обновление хэш-таблицы. Это в принципе императивное действие. Причем оно усугубляется тем, что итератор хэш-таблиц не терпит изменения. Так вот обращение к свойству KeyValuePairs создает массив с копией элементов в следствии чего эта прблема исчезает.


    Да, если бы код не был императивным я бы вообще отказался от foreach и воспользовался map/filter/fold. А так я привык рассматривать foreach как "императивный map" или что-то вроде этого.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[27]: Оффтопик: Nemerle
    От: Vermicious Knid  
    Дата: 02.10.06 20:48
    Оценка: +1
    Здравствуйте, konsoletyper, Вы писали:

    K>Может не совсем понятно. Попытаюсь объяснить. Вместо чего-то вроде:

    K>мне приятнее запись:
    А мне приятнее первая запись, и что? Это не аргумент. Тем более, что вторая явно избыточна. А в более сложном случае(таком как пример Влада, с которого это ветка и началась) будет вообще кошмар.

    K>Просто в более чистых ФЯ я бы использовал map и локальную функцию, чтобы не писать каждый раз ненужную рекурсию. А Немерле более императивный, потому в нём следует писать по-другому.

    Действительно по-другому, на мой взгляд VladD2 в этом примере показал как раз как в нем стоит писать.

    K>Однако, если есть вохможность создать ленивый list comprehension, то первый и второй фрагменты скомпилировались в идентичный код. Тогда почему бы не использовать вторую запись? Или даже

    Причем здесь ленивость, если ты хочешь идентичный код для первого и второго? При реальной ленивости добиться этого нереально, да и накладные расходы на нее будут скорее всего превышать накладные расходы на создание временного списка.

    Что для этого нужно, так это дополнительный сахар в макросе foreach, вроде того что ввели для промежутков(foreach(i in [1..10])), так как list comprehensions в общем-то и так превращаются в самые обычные императивные циклы, а временный список можно и не создавать. Например уже сейчас можно делать так:
    $[e | e in lst, e > 5, { doSomething(); false } ]

    Этот код будет вести себя как обычный цикл, не создаст никаких временных объектов(так как вернет пустой список). Вот только это не очень читабельно и не интуитивно понятно. И боюсь, что хорошо интегрировать это с синтаксисом foreach не выйдет(что твой "второй фрагмент" и доказывает). То есть в любом случае это будет выглядеть чужеродно.
    Re[29]: Оффтопик: Nemerle
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 02.10.06 22:19
    Оценка:
    Здравствуйте, konsoletyper, Вы писали:

    K>Странно. Мне казалось, что при обработке list comprehension создаётся набор пар в куче. А где же ещё?


    В исходном коде нет никакого list comprehension. Да и если бы был, то примитивные случае часто арзворачиваются в циклы.

    K>Много мёртвых объектов просто напросто провоцируют частое срабатываение GC.


    "Много" понятие отнтсительное. Много тут просто нет в принципе. А сборка нулевого поколения быстра и если объетов нет, то и времени не отнимает почти.

    K> А это значит нужно пройтись по графу объектов,


    Ага. Только нет графа. Поколение 0 пусто и обход закончится почти сразу. К тому же обход прцедура относительно дешовая. А вот перемещение — это да. Но перемещать то ведь особо нечего. Трупы не перемещаются.

    K> затем делать дефрагментацию кучи.


    Нет никакой дефрагментации кучи. Перемещение в первое поколение и есть эта дефргментация. В общем, я тут как-то писал статью по этому поводу. Глять ее. Там все довольно популярно изложено.

    Тут же отсуствует предмет разговора.

    K>Да, если бы код не был императивным я бы вообще отказался от foreach и воспользовался map/filter/fold.


    Где код работает со писками там так и есть. А с хэш-таблицей это бессмысленно и даже вредно. Так то все лаогично.

    K> А так я привык рассматривать foreach как "императивный map" или что-то вроде этого.


    На самом деле если задача заключается в модификации чего било или другом побочном эффекте форичи очень даже удобны. В общем всему свое место.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[8]: Дополнение
    От: vdimas Россия  
    Дата: 03.10.06 01:41
    Оценка:
    Здравствуйте, Геннадий Васильев, Вы писали:


    ГВ>Дим, как только вокруг нашего дела стали крутиться бабки (даже не так: БАБКИ), сюда столько мусора натащило и ещё натащит, что мама, не горюй.



    Ну, то что стали крутиться бабки и "понаехало тут" — это нормально. Ненормально то, что многие из понаехавших в упор не хотят понять, что создание ПО суть работа творчесская, причем на любом этапе ее выполнения, невзирая на тысячи стандартов и руководств по их использованию. Даже у самого что ни на есть "кодера" работа творческая.

    ГВ>Меня, в принципе, одно успокаивает. Сколько бы всяческая шелупонь не надувала щёки, в любом случае сложность задачи и сложность её реализации никуда не денутся — хоть ты галстук надень, хоть распишись в корпоративной верности до третьего колена, хоть сертификатами, как обоями обклейся. Отсюда, собственно, принципиальная невозможность свести программирование к обезъянничанью, как бы этого кому бы то ни было не хотелось. Ну не полетит самолёт с крыльями от Ан-2 (для дешевизны) и двигателем от Ту-144 (для скорости)...



    Озвучивал уже как-то, что небольшое количество типов задач наряду с существующими тоннами неуниверсальных решений под них говорит лишь о том, что развитие ПО безбожно отстает от потребностей рынка. Так на уровне библиотек и хелперов и топчемся десяток-другой последних лет. Тут мне говорят иногда, что видите ли, бизнессс-логика-то у всех разная. Гут. Почему же трудоемкость программирования и отладки этой бизнес-логики в реальных проектах дай бог 20%-30% (очень оптимистично)? Не потому ли, что сами проекты пишутся обезьяним методом, по принципу повторного применения в похожих случаях одних и тех же либ похожим образом, вместо попыток сделать качественный шаг вперед?


    ГВ>PS.: Проголосовал за выделение твоего сообщения в отдельную ветку. 2All: присоединяйтесь.


    Да ну его. Сто раз уже обменивались любезностями по аналогичному поводу.
    Re[23]: Насколько важен синтаксис языка?
    От: EvilChild Ниоткуда  
    Дата: 07.10.06 13:05
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Проблема в том, что мозги императивного программиста повёрнуты на решение задач без всяких делегатов. А дибильные (простите, други, но другого слова не подобрать) примеры из серии list.ForEach() только усугубляют ситуацию, т.к. в импертивном стили они решаются не менее эффективно, а для императивщика выглядят куда проще и понятнее.


    IT>Тут надо искать примеры, которые действительно показывают силу ФП, где ФП резко устраняет дублирование кода и делает его намного проще. В принципе, если есть интерес, то такие примеры можно привести.


    С удовольствием посмотрел бы на такие примеры. Особенно на C# 2.0.
    now playing: Photek — Junk
    Re[24]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 07.10.06 21:14
    Оценка: 94 (9)
    Здравствуйте, EvilChild, Вы писали:

    IT>>Тут надо искать примеры, которые действительно показывают силу ФП, где ФП резко устраняет дублирование кода и делает его намного проще. В принципе, если есть интерес, то такие примеры можно привести.


    EC>С удовольствием посмотрел бы на такие примеры. Особенно на C# 2.0.


    Один пример я приводил здесь
    Автор: IT
    Дата: 03.10.06
    . Вкратце, на анонимных делегатах можно писать многопоточный код синхронизации UI практически линейно:

    public delegate void InvokeDelegate();
    
    public void Invoke(InvokeDelegate call)
    {
        if (InvokeRequired)
            base.Invoke(call);
        else
            call();
    }
    
    string LongProcess(string text)
    {
        Thread.Sleep(1000);
        return text;
    }
    
    void button1_Click(object sender, EventArgs e)
    {
        string   text     = textBox1.Text;
        WaitForm waitForm = new WaitForm();
    
        new Thread(delegate() // 1
        {
            Exception exception = null;
            string    result    = null;
    
            try
            {
                result = LongProcess(text);
            }
            catch (Exception ex)
            {
                exception = ex;
            }
    
            Invoke(delegate() // 2
            {
                waitForm.Close();
    
                if (exception == null)
                    textBox2.Text = result;
                else
                    MessageBox.Show(exception.Message);
            });
        }).Start();
    
        waitForm.ShowDialog();
    }

    Стандартный путь — объявление отдельных методов для каждого случая. Для этого примера таких методов понадобится два. На практике их обычно оказывается несколько больше. Достаточно сюда добавить код показа состояния работы длительного процесса, например, в StatusBar и всё станет немного сложнее. В WinForms 2.0 появился компонент BackgroundWorker, но его использование мне кажется ещё более неочевидным, запутанным и тяжеловестным для такой простой операции как выполнение длительной задачи в фоновом потоке.

    Данный пример также демонстрирует захват контекста анонимными функциями. Так, например, первая анонимная функция захватывает переменную text из основного метода, вторая — waitForm из основного метода, exception и result из первой анонимной функции.

    Тем не менее данный пример не является наиболее часто используемым подходом. Чаще всего лямбды используются в качестве... скажем так, "виртуальных параметров".

    Например, у нас есть метод, который рекурсивно обходит некоторое дерево в поисках одного из узлов, после чего выполняет над этим узлом некоторое действие:

    void FindAndExpand(string name)
    {
        // алгоритм обхода дерева.
    
        // критерий поиска.
        if (node.Name == name)
        {
            // выполняем какие-то действия с найденным узлом.
        }
    }

    Проблема такого подхода в том, что критерий поиска жестко зашит в сам алгоритм. Если у нас имеется не одно имя для сравнения, а целая коллекция, и задача будет найти первый попавшийся узел, то нам придётся тупо скопировать наш метод и переписать его следующим образом:

    void FindAndExpand(Dictionary<string,MyClass> dic)
    {
        // алгоритм обхода дерева.
    
        // критерий поиска.
        if (dic.ContainsKey(node.Name))
        {
            // выполняем какие-то действия с найденным узлом.
        }
    }

    Что можно сделать, чтобы этого не делать? Можно попробовать использовать в качестве параметра делегат:

    void FindAndExpand(Predicate<NodeType> checkNode)
    {
        // алгоритм обхода дерева.
    
        // критерий поиска.
        if (checkNode(node))
        {
            // выполняем какие-то действия с найденным узлом.
        }
    }

    Варианты использования:

    string nodName = "...";
    
    FindAndSetCurrent(delegate(NodeType node) { return node,Name == nodeName; }


    Dictionary<string,MyClass> dic = ...;
    
    FindAndSetCurrent(delegate(NodeType node) { return dic.ContainsKey(node,Name); }

    Predicate<> — это стандартный делегат, объявленный в System. Там же ещё имеются делегаты Action<T>(T t), Comparison<T>(T x, T y), Converter. Естественно, никто не запрещает использовать таким же образом свои собственные делегаты.

    Это пожалуй пока наиболее типичный способ использования анонимных функций в C# 2.0.

    Следует заметить, что избавиться от дублирования кода в нашем примере можно и другим, объектно-ориентированным способом:

    abstract class FinderExpander
    {
        protected abstract bool CheckNode(NodeType node);
        
        void FindAndExpand(Predicate<NodeType> checkNode)
        {
            // алгоритм обхода дерева.
    
            // критерий поиска.
            if (CheckNode(node))
            {
                // выполняем какие-то действия с найденным узлом.
            }
        }
    }

    В принципе, если наш метод перерастёт в нечно большее, обрастёт другими методами и похожими на CheckNode виртуальными функциями, то такой способ будет даже предпочтительнее. Но пока это стрельба из пушки по воробъям. Использование "виртуальных параметров" вместо виртуальных функций в нашем примере делает код значительно проще и читабелнее.

    В языках с более лучшей поддержкой функционального стиля, чем в C#, довольно широко применяются локальные функции для инкапсуляции алгоритма внутри одного метода. Например, для обхода дерева в примере выше нам скорее всего понадобится дополнительная рекурсивная функция:

    bool GetNodes(List<NodeType> parents, List<NodeType> nodes, Predicate<NodeType> checkNode)
    {
        foreach (NodeType node in nodes)
        {
            if (checkNode(node) || GetNodes(parents, node.Nodes, checkNode)
            {
                parents.Insert(0, node);
                return true;
            }
        }
    }
    
    void FindAndExpand(Predicate<NodeType> checkNode)
    {
        List<NodeType> parents = new List<NodeType>();
    
        GetNodes(parents, _tree, checkNodes);
        
        // обходим дерево найдённых узлов parents и раскрываем все ветки.
    }

    Тоже самое в исполнении Nemerle будет выглядеть примерно следующим образом:

    FindAndExpand(checkNode : Predicate[NodeType]) : void
    {
        def parents = List<NodeType>();
    
        def getNodes(nodes)
        {
            foreach (node in nodes)
            {
                when (checkNode(node) || GetNodes(node.Nodes)
                {
                    parents.Insert(0, node);
                    return true;
                }
            }
        }
    
        getNodes(_tree);
        
        // обходим дерево найдённых узлов parents и раскрываем все ветки.
    }

    Практически тоже самое, только вспомогательный метод внесён в тело основного метода, что даёт ему возможность пользоваться его контекстом. В результате получается такой функционально (от функциональность) законченный метод, который инкапсулирует в себе всё необходимое для выполнения определённой функциональности.

    Как я уже заметил выше, иногда в процессе разработки размеры такого метода становятся таковы, что просятся в отдельный класс, что является вполне закономерным решением. Но для небольших методов — приведённый выше пример гораздо предпочтительнее.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[25]: Насколько важен синтаксис языка?
    От: EvilChild Ниоткуда  
    Дата: 08.10.06 08:24
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Тем не менее данный пример не является наиболее часто используемым подходом. Чаще всего лямбды используются в качестве... скажем так, "виртуальных параметров".

    Такой подход как раз и использую, бывает, что один и тот же код должен работать с участием пользователя
    (показывать MessageBox'ы) и без него, концептуально красиво, но текущий синтаксис тяжеловат — жду C# 3.0.

    IT>Тоже самое в исполнении Nemerle будет выглядеть примерно следующим образом:

    Коль уж ты его упомянул хочу спросить. У меня сложилось впечатление, что ты человек исключительно практичный:
    не страдаешь излишним академизмом и не бросаешься на всё новое и блестящее. Тем не менее ты участвуешь в проекте
    по интеграции Nemerle в студию и вообще интересуешься этим языком.
    Это просто любопытство/куча свободного времени или ты действительно веришь что у него есть будущее?
    now playing: Photek — Smoke Rings
    Re[26]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 08.10.06 17:44
    Оценка:
    Здравствуйте, EvilChild, Вы писали:

    EC>Это просто любопытство/куча свободного времени или ты действительно веришь что у него есть будущее?


    А ты попробуй сам. Только учти это заразительно. Не дай бог втянешся...
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[27]: Насколько важен синтаксис языка?
    От: EvilChild Ниоткуда  
    Дата: 08.10.06 18:32
    Оценка: +1 :))
    Здравствуйте, VladD2, Вы писали:

    EC>>Это просто любопытство/куча свободного времени или ты действительно веришь что у него есть будущее?


    VD>А ты попробуй сам. Только учти это заразительно. Не дай бог втянешся...


    Ты верно процитировал (что обнадёживает), но видимо неправильно понял вопрос и как следствие не ответил на него.
    Hint: даже если я попробую и втянусь это не гарантирует Nemerle светлое будущее.
    И ещё момент (не восприми превратно): с твоим мнением по данному поводу здесь все уже неоднократно ознакомились ,
    интересует мнение именно IT — его подход мне видится более прагматичным.
    now playing: Teebee — Future War
    Re[28]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 08.10.06 18:44
    Оценка:
    Здравствуйте, EvilChild, Вы писали:

    EC>интересует мнение именно IT — его подход мне видится более прагматичным.


    +1

    ИМХО:
    * именно такие люди, как IT и Oyster (жалко, что его не видно в последнее время, на заре обсуждения Nemerle оно очень интересные примеры приводил) и определяют реальное будущее языка. Если уж они за него взялись, значит дело серьезно;
    * да, у Nemerle может быть вполне серьезное и достойное будущее на платформе .NET, если только он не превратится в долгострой, как D. Или не станет экпериментальной академической разработкой.

    Если бы я работал на .NET, то стал бы использовать Nemerle сразу после выпуска стабильной версии 1.0 (по крайней мере во внутренних проектах).


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[29]: Насколько важен синтаксис языка?
    От: EvilChild Ниоткуда  
    Дата: 08.10.06 19:00
    Оценка:
    Здравствуйте, eao197, Вы писали:

    E>* да, у Nemerle может быть вполне серьезное и достойное будущее на платформе .NET, если только он не превратится в долгострой, как D. Или не станет экпериментальной академической разработкой.

    Мне кажется, что проблема не в долгостроительстве, а в поддержке корпорацией-монстром.
    И я в упор не вижу какой может быть интерес например, у Microsoft, чтобы его двигать.
    У них и так зоопарк языков под .NET неплохой.
    Плюс Nemerle IMHO слишком навороченный для mainstream'а, а монстры ориентируются именно на него — живут за счёт эффекта масштаба.
    Единственный вариант это небольшая компания, двигающая его, дающая платный саппорт.
    Типа как со SmallTalk'ом — есть несколько вендоров, сообщество разработчиков для которых это отличный инструмент,
    т.е. есть какие-то гарантии с позиции бизнеса в том, что продукт будет жить и в случае возникновения проблем есть к кому обратиться.
    now playing: Teebee — Retrofunk
    Re[30]: Насколько важен синтаксис языка?
    От: eao197 Беларусь http://eao197.blogspot.com
    Дата: 08.10.06 19:35
    Оценка: +1
    Здравствуйте, EvilChild, Вы писали:

    E>>* да, у Nemerle может быть вполне серьезное и достойное будущее на платформе .NET, если только он не превратится в долгострой, как D. Или не станет экпериментальной академической разработкой.

    EC>Мне кажется, что проблема не в долгостроительстве, а в поддержке корпорацией-монстром.
    EC>И я в упор не вижу какой может быть интерес например, у Microsoft, чтобы его двигать.

    В случае хорошей идеи и реализации поддержка корпораций-монстров не обязательна. Примеры Perl, Python, Ruby, Lua и пр. это подтверждают. Можно вспомнить еще и Linux, в который IBM начала вкладывать миллиарды уже после того, как Linux доказал свое право жизни под солнцем.

    EC>У них и так зоопарк языков под .NET неплохой.


    Имхо, это их главное преимущество перед Sun. Ведь Sun сейчас старается сделать JVM платформой для других языков, для этого они и JRuby под свое крыло берут.

    EC>Плюс Nemerle IMHO слишком навороченный для mainstream'а, а монстры ориентируются именно на него — живут за счёт эффекта масштаба.


    Не думаю, что Nemerle станет мейнстримом. Но это не обязательно. Главное -- чтобы он стал удобным и качественным инструментом для своих задач. А дальше уже нужно будет смотреть, что именно тебе нужно -- мейстрим или удобный для тебя инструмент. В конце-концов многих заказчиков вообще не волнует, на чем написан софт (а некоторых как раз волнует) и в таких случаев ты сам можешь оценивать риски и выгоды от применения немейнстримового (однако и не экзотического) инструмента.

    EC>Единственный вариант это небольшая компания, двигающая его, дающая платный саппорт.


    Такой вариант так же возможен.


    SObjectizer: <микро>Агентно-ориентированное программирование на C++.
    Re[28]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 08.10.06 22:05
    Оценка:
    Здравствуйте, EvilChild, Вы писали:

    EC>>>Это просто любопытство/куча свободного времени или ты действительно веришь что у него есть будущее?


    VD>>А ты попробуй сам. Только учти это заразительно. Не дай бог втянешся...


    EC>Ты верно процитировал (что обнадёживает), но видимо неправильно понял вопрос и как следствие не ответил на него.

    EC>Hint: даже если я попробую и втянусь это не гарантирует Nemerle светлое будущее.
    EC>И ещё момент (не восприми превратно): с твоим мнением по данному поводу здесь все уже неоднократно ознакомились ,
    EC>интересует мнение именно IT — его подход мне видится более прагматичным.

    Хочешь посмеяться? Тогда прочти то что я тебе написал. Прочти процетированное, а потом прочти то что написал ты.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[29]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 08.10.06 22:05
    Оценка:
    Здравствуйте, eao197, Вы писали:

    EC>>интересует мнение именно IT — его подход мне видится более прагматичным.


    E>+1


    E>ИМХО:

    E>* именно такие люди, как IT и Oyster (жалко, что его не видно в последнее время, на заре обсуждения Nemerle оно очень интересные примеры приводил) и определяют реальное будущее языка. Если уж они за него взялись, значит дело серьезно;
    E>* да, у Nemerle может быть вполне серьезное и достойное будущее на платформе .NET, если только он не превратится в долгострой, как D. Или не станет экпериментальной академической разработкой.

    E>Если бы я работал на .NET, то стал бы использовать Nemerle сразу после выпуска стабильной версии 1.0 (по крайней мере во внутренних проектах).


    Одно не пойму, если по твоим же словам твое мнение никого не интересует (тут я с тобой согласен), то что ты его высказываешь?
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[30]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 08.10.06 22:05
    Оценка:
    Здравствуйте, EvilChild, Вы писали:

    EC>Единственный вариант это небольшая компания, двигающая его, дающая платный саппорт.

    EC>Типа как со SmallTalk'ом — есть несколько вендоров, сообщество разработчиков для которых это отличный инструмент,

    Бог даст такого не случится. Судба СТ явно не завидная.

    EC>т.е. есть какие-то гарантии с позиции бизнеса в том, что продукт будет жить и в случае возникновения проблем есть к кому обратиться.


    Такой проблемы нет в принципе. Обратиться и так есть куда. В "Декларативном программирований" добрая половина вопросов по этому языку. Плюс на английском можно обращаться к самим разработчикам. Да и кроме них там специалистов высогого класса хватает. А открытость проекта и отличная лицензия позвляют быть спокойным за судьбу кода.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[9]: Насколько важен синтаксис языка?
    От: Андрей Хропов Россия  
    Дата: 08.10.06 23:32
    Оценка: +1
    Здравствуйте, Sinclair, Вы писали:

    S>Здравствуйте, Геннадий Васильев, Вы писали:


    ГВ>>Есть. Ты забываешь про лес и выделяешь деревья. Win2K очень много дельного говорит (как и камрад Kolhoz). Не знаю, зачем это ему нужно. Может быть, его тоже достал "майнстрим" со своими амбициями? Я вот ничего оскорбительного в его словах не вижу

    S>а ты сходи постинги его почитай. Квалификация у чувака есть, но от так тщательно маскирует ее за ведрами помоев, что трудно разглядеть. И уж успешность его в жизни — не знаю, личной там или профессиональной, — вызывает обоснованные сомнения. Влад верно заметил — те, кто чувствует себя комфортно и достиг успеха, не бегают на форумы собеседников в умственной отсталости обвинять.
    Да нет, просто есть категория людей которых прикалывает стебаться.
    Вот они намеренно и провоцируют людей — это есть тролли. И грамотные тролли как раз высказывают подчас верные (ну или по крайней мере имеющие право на существование) мысли но в провокационной форме и тем самым провоцируют флейм.

    Ну а у неграмотных не получается
    Автор: quadrochups
    Дата: 05.10.06
    (не соблюдают баланс между содержанием и провокационностью) — над ними просто смеются и ставят "-".
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Re[26]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 09.10.06 02:43
    Оценка: 13 (2) +1
    Здравствуйте, EvilChild, Вы писали:

    EC>Это просто любопытство/куча свободного времени или ты действительно веришь что у него есть будущее?


    Будущее есть однозначно. Либо у самого языка, либо у его клонов, либо конкуренты потырят из него всё лучшее.

    Хорошо бы конечно, чтобы кто-нибудь сильный мира сего взял проект под своё крыло, но с другой стороны для этого проект сначала должен стать достаточно заметным. Чтобы стать более заметным проекту нужно помочь. По-этому я и занимаюсь интеграцией

    Что касается самого языка, то именно как у языка у него сейчас конкурентов просто нет (ИМХО, конечно). Это для меня самого было большим сюрпризом, и чем больше я на нём пишу, тем больше готов это утверждать. И это ещё даже не воспользовавшись ни разу тяжёлой артиллерией в виде макросов. А уж с макросами...
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[30]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 09.10.06 03:21
    Оценка: 2 (1) +1
    Здравствуйте, EvilChild, Вы писали:

    EC>Мне кажется, что проблема не в долгостроительстве, а в поддержке корпорацией-монстром.


    Честно говоря, поддержка корпорацией-монстром может оказаться как благом так и злом.

    EC>И я в упор не вижу какой может быть интерес например, у Microsoft, чтобы его двигать.

    EC>У них и так зоопарк языков под .NET неплохой.

    Зоопарк неплохой, да вот только живых зверушек в нём не так много: C# и VB. C++/CLI похоже опять получился мёртворождённый. На J# вроде тоже никто не пишет. F# доказывает, что .NET как среда в принципе может использоваться для языков хороших и разных. IronPyton вряд ли пойдёт дальше, чем не очень удачный пример к VS SDK. Так что по настоящему нормальных экспонатов в этом зоопарке только два. OK, C++ и J# всё же могут использоваться для решения некоторых специфичных задач.

    EC>Плюс Nemerle IMHO слишком навороченный для mainstream'а, а монстры ориентируются именно на него — живут за счёт эффекта масштаба.


    Лично мне навороченность ничуть не мешает. Да и навороченностью это вряд ли можно назвать. Всё что есть в N давно известно и ожидаемо. Так или иначе все эти навороты будут постепенно перекочёвывать в мейнстрим. Хотя бы потому, что прогресс остановить нельзя, а путей его развития в IT всё меньше и меньше.

    EC>Единственный вариант это небольшая компания, двигающая его, дающая платный саппорт.


    Сапорт чего? Компилятора? Так вроде авторы справляются. Документация нужна, это да. Но первый, написавший нормальную книжку по N не только сорвёт куш, но и во многом закроет этот пробел. Основную библиотеку, которая .NET Framework, сапортит MS А это пожалуй гораздо больше по затратам, чем сам язык. Студию тоже пишет немало народу, человек 500. Вот прикрутим интеграцию и пусть дальше MS это дело сапортит.

    EC>Типа как со SmallTalk'ом — есть несколько вендоров, сообщество разработчиков для которых это отличный инструмент,


    Может что-то и появится.

    EC>т.е. есть какие-то гарантии с позиции бизнеса в том, что продукт будет жить и в случае возникновения проблем есть к кому обратиться.


    У бизнеса есть более серьёзные гарантии — открытость исходников и вменяемые авторы.
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[25]: Насколько важен синтаксис языка?
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 09.10.06 08:51
    Оценка: 26 (2) +1
    Здравствуйте, IT, Вы писали:


    IT>В языках с более лучшей поддержкой функционального стиля, чем в C#, довольно широко применяются локальные функции для инкапсуляции алгоритма внутри одного метода. Например, для обхода дерева в примере выше нам скорее всего понадобится дополнительная рекурсивная функция:


    IT>
    IT>bool GetNodes(List<NodeType> parents, List<NodeType> nodes, Predicate<NodeType> checkNode)
    IT>{
    IT>    foreach (NodeType node in nodes)
    IT>    {
    IT>        if (checkNode(node) || GetNodes(parents, node.Nodes, checkNode)
    IT>        {
    IT>            parents.Insert(0, node);
    IT>            return true;
    IT>        }
    IT>    }
    IT>}
    
    IT>void FindAndExpand(Predicate<NodeType> checkNode)
    IT>{
    IT>    List<NodeType> parents = new List<NodeType>();
    
    IT>    GetNodes(parents, _tree, checkNodes);
        
    IT>    // обходим дерево найдённых узлов parents и раскрываем все ветки.
    IT>}
    IT>


    Не советую. На мой вкус, лучше реализовать ленивый обход дерева:
            /// <summary>
            /// Recursively iterates through the structure of homogenous elements, using the specified navigator.
            /// Ideal for planarization of the tree-like structures
            /// </summary>
            /// <typeparam name="T">Node type</typeparam>
            /// <param name="root">Structure root node</param>
            /// <param name="navigator">Delegate that returns the collection of forward pointers from the specified node</param>
            /// <returns>Enumerator that lazily iterates through the structure</returns>
            public static IEnumerable<T> IterateThrough<T>(T root, Converter<T, IEnumerable<T>> navigator)
            {
                yield return root;
    
                foreach (T child in navigator(root))
                    foreach (T descendant in IterateThrough(child, navigator))
                        yield return descendant;
            }

    Для приведенного тобой примера:
    IEnumerable<ListNode> GetNodes(List<NodeType> nodes, Predicate<NodeType> checkNode)
    {
      foreach(NodeType node in nodes)
          if (checkNode(node))
            {
              yield return node;
              foreach(NodeType child in IterateThrough(node, delegate(NodeType n) { return n.Nodes; }))
                  if(checkNode(child) 
                      yield return child;
            }
    }


    Немножко длинновато, но конкретно для данного случая у меня реализована перегрузка IterateThrough, которая принимает на вход IEnumerable<T> roots вместо одного root.
    Для нее можно укоротить GetNodes до вот такого:
    IEnumerable<ListNode> GetNodes(List<NodeType> nodes, Predicate<NodeType> checkNode)
    {
      return FindAll(IterateThrough(nodes, delegate(NodeType n) { return n.Nodes; }), checkNode);
    }

    (Предполагается, что заранее реализован тривиальный метод IEnumerable<T> FindAll<T>(IEnumerable<T> source, Predicate<T> filter), который лениво фильтрует перечисление).
    Стоит отметить, что здесь применяется поздняя фильтрация. Если имеется в виду, что предикат checkNode устроен так, что всегда вернет false для всех потомков любой ноды, для которой возвращает false, то можно немножко соптимизировать перебор дерева:
    IEnumerable<ListNode> GetNodes(List<NodeType> nodes, Predicate<NodeType> checkNode)
    {
      return FindAll(IterateThrough(nodes, delegate(NodeType n) { return FindAll(n.Nodes, checkNode); }), checkNode);
    }
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[26]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 09.10.06 12:14
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>Не советую. На мой вкус, лучше реализовать ленивый обход дерева:


    Согласен. Но вообще-то задача была продемонстрировать использование локальных функций
    ... << RSDN@Home 1.2.0 alpha rev. 0>>
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[29]: Насколько важен синтаксис языка?
    От: EvilChild Ниоткуда  
    Дата: 09.10.06 17:13
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Хочешь посмеяться? Тогда прочти то что я тебе написал. Прочти процетированное, а потом прочти то что написал ты.

    Хочу. Но пока не могу понять над чем — серьёзно. Попробуй объяснить более доходчиво.
    now playing: Noisia & Phace — Thrillseekers
    Re[31]: Насколько важен синтаксис языка?
    От: EvilChild Ниоткуда  
    Дата: 09.10.06 17:32
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Лично мне навороченность ничуть не мешает. Да и навороченностью это вряд ли можно назвать. Всё что есть в N давно известно и ожидаемо. Так или иначе все эти навороты будут постепенно перекочёвывать в мейнстрим. Хотя бы потому, что прогресс остановить нельзя, а путей его развития в IT всё меньше и меньше.

    То, что тебе не мешает никак не свидетельствует, что это подходит для мэйнстрима — ты всё-таки не рядовой разработчик, который просто работает на работе.

    IT>Сапорт чего? Компилятора? Так вроде авторы справляются. Документация нужна, это да. Но первый, написавший нормальную книжку по N не только сорвёт куш, но и во многом закроет этот пробел. Основную библиотеку, которая .NET Framework, сапортит MS А это пожалуй гораздо больше по затратам, чем сам язык. Студию тоже пишет немало народу, человек 500. Вот прикрутим интеграцию и пусть дальше MS это дело сапортит.

    Так вроде авторы справляются это несерьёзно — представь себе среднюю контору, использующую C#. В ней не найдётся людей достаточно квалифицированных, чтобы исправить серёзную ошибку в компиляторе Nemerle. А ждать когда разработчики соизволять что-то зафиксить может быть непозволительным — например у тебя через неделю релиз и тут приходит злой ICE.

    IT>У бизнеса есть более серьёзные гарантии — открытость исходников и вменяемые авторы.

    Вменяемость авторов может закончиться в самый неподходящий момент, например они потеряют к проекту интерес как Влад к R#, а у тебя уже тонна кода наколбашена, вложены деньги в обучение людей, куча обязательств перед клиентами — я думаю, что суровые будни коммерческой разработки ты представляешь лучше меня, почему меня собственно и удивил твой интерес.

    И ещё момент — а как быть с изменениями в компиляторе, ломающими обратную совместимость? Или будет обнаружен баг, для устранения которого её нужно будет сломать (так было с одной уязвимостью в винде — MS отказалась её фиксить в NT 4 по этой причине)?
    now playing: Noisia & Teebee — Whisperbox
    Re[32]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 09.10.06 19:43
    Оценка: +1
    Здравствуйте, EvilChild, Вы писали:

    EC>То, что тебе не мешает никак не свидетельствует, что это подходит для мэйнстрима — ты всё-таки не рядовой разработчик, который просто работает на работе.


    Я не разделяю мнения, что большинство разработчиков — это тупые, безмозглые твари, способные выполнять лишь monkey's job. Конечно же приходилось встречать и таких, но в моей практике их было подавляющее меньшинство. С другой стороны, я предпочитаю объективно оценивать свои собственные способности восприятия нового и расцениваю их как вполне адекватные, но далеко не выдающиеся. При этом на первоначальное ознакомление с N у меня ушло не более пары часов, потраченных на прочтение документации с сайта nemerle.org.

    EC>Так вроде авторы справляются это несерьёзно — представь себе среднюю контору, использующую C#. В ней не найдётся людей достаточно квалифицированных, чтобы исправить серёзную ошибку в компиляторе Nemerle. А ждать когда разработчики соизволять что-то зафиксить может быть непозволительным — например у тебя через неделю релиз и тут приходит злой ICE.


    Вообще-то я с успехом и с завидной периодичностью ловил в своё время ICE в TC++/BC++. И надо признать, шансов на исправление тех ошибок до выхода новой версии продукта у меня не было никаких. Переписывал код по другому и жил дальше. Даже в релизе C# 1.0 был ICE — здесь
    Автор: IT
    Дата: 18.04.02
    . Ничего, год как-то прожили, релизили и никого не ждали. А вот в случае с N как раз есть все шансы, что такая фигня будет исправлена очень быстро.

    IT>>У бизнеса есть более серьёзные гарантии — открытость исходников и вменяемые авторы.

    EC>Вменяемость авторов может закончиться в самый неподходящий момент, например они потеряют к проекту интерес как Влад к R#, а у тебя уже тонна кода наколбашена, вложены деньги в обучение людей, куча обязательств перед клиентами — я думаю, что суровые будни коммерческой разработки ты представляешь лучше меня, почему меня собственно и удивил твой интерес.

    Вокруг N уже собирается определённое комьюнити не только сторонних созерцателей. Править баги в компиляторе и добавлять в него фичи могу даже я. Если ты очень захочешь, то и ты тоже. Глупости делать конечно никто ни тебе, ни мне не позволит, но вещи касающиеся поддержки компилятора запросто. Соответственно, если авторам это всё надоест, в чём я лично сомневаюсь, или у них банально не будет времени, то вполне могут найтись другие, кому судьба языка будет не безразлична.

    EC>И ещё момент — а как быть с изменениями в компиляторе, ломающими обратную совместимость? Или будет обнаружен баг, для устранения которого её нужно будет сломать (так было с одной уязвимостью в винде — MS отказалась её фиксить в NT 4 по этой причине)?


    Тем не менее я в своё время не смог перейти без проблем с VC++ 6 на VC++ 7 по причине несовместимости новой версии MFC. Тоже как-то выкручивался.

    Да и все прекрасно понимают эти проблемы. Уже сейчас, хотя компилятор ещё в бете, никто не станет просто так делать ломающих изменений. Чтобы убедиться в этом достаточно почитать форум разработчиков.
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[33]: Насколько важен синтаксис языка?
    От: EvilChild Ниоткуда  
    Дата: 09.10.06 19:55
    Оценка:
    Здравствуйте, IT, Вы писали:

    IT>Я не разделяю мнения, что большинство разработчиков — это тупые, безмозглые твари, способные выполнять лишь monkey's job.

    Об этом речь и близко не идёт.

    IT>Вокруг N уже собирается определённое комьюнити не только сторонних созерцателей. Править баги в компиляторе и добавлять в него фичи могу даже я. Если ты очень захочешь, то и ты тоже. Глупости делать конечно никто ни тебе, ни мне не позволит, но вещи касающиеся поддержки компилятора запросто. Соответственно, если авторам это всё надоест, в чём я лично сомневаюсь, или у них банально не будет времени, то вполне могут найтись другие, кому судьба языка будет не безразлична.

    Ок. Когда ты будешь готов использовать Nemerle в коммерческой разработке? Т.е. чего сейчас не хватает? Что ещё необходимо доделать?
    now playing: Teebee — Hunter
    Re[34]: Насколько важен синтаксис языка?
    От: IT Россия linq2db.com
    Дата: 09.10.06 20:44
    Оценка: 13 (2)
    Здравствуйте, EvilChild, Вы писали:

    EC>Ок. Когда ты будешь готов использовать Nemerle в коммерческой разработке? Т.е. чего сейчас не хватает? Что ещё необходимо доделать?


    К сожалению/счастью, от меня это не зависит. Мой текущий клиент, контора из Fortune 50, имеет в штате специально обученных ребят, которые прежде чем дать добро сначала долго и внимательно изучают предмет. Процесс этот долгий и бюракратичный, и бету они точно завернут не задумываясь. Но как только выйдет релиз, я буду рекомендовать Nemerle к использованию.

    Что касается других проектов, то если всё же дело дойдёт до переписывания RSDN и выбор средств разработки будет зависеть от меня, то сайт будет писаться с использованием Nemerle вне всякого сомнения.

    Но всё же я должен заметить, что я не тот советчик, на которого нужно равняться, т.к. всё же в определённой степени я уже предвзят.
    Если нам не помогут, то мы тоже никого не пощадим.
    Re[35]: Насколько важен синтаксис языка?
    От: WolfHound  
    Дата: 10.10.06 07:38
    Оценка: +2 :)
    Здравствуйте, IT, Вы писали:

    IT>Но всё же я должен заметить, что я не тот советчик, на которого нужно равняться, т.к. всё же в определённой степени я уже предвзят.

    А непредвзятые советчики вобще бывают?
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[30]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.10.06 17:24
    Оценка:
    Здравствуйте, EvilChild, Вы писали:

    EC>Хочу. Но пока не могу понять над чем — серьёзно. Попробуй объяснить более доходчиво.


    Если ты этого не понимаешь, что объяснить что-то будет очень тяжело. Ты ведь отвечашь на на мое сообщение, а на какие-то свои мысли. Если просто прочесть твое письмо, то создается впечатление легкого бреда. Ты углядел какой-то ответ там где тебе предложили попробовать самому. И начал полемизировать с тем, что никто не говорил.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[31]: Насколько важен синтаксис языка?
    От: EvilChild Ниоткуда  
    Дата: 10.10.06 18:13
    Оценка: +1 :)
    Здравствуйте, VladD2, Вы писали:

    VD>Если ты этого не понимаешь, что объяснить что-то будет очень тяжело. Ты ведь отвечашь на на мое сообщение, а на какие-то свои мысли. Если просто прочесть твое письмо, то создается впечатление легкого бреда. Ты углядел какой-то ответ там где тебе предложили попробовать самому. И начал полемизировать с тем, что никто не говорил.

    Мне не хочется захламлять форум подобной ерундой — её и так слишком много, но тем не менее.
    Я задал вполне конкретному человек вопрос и судя по тому, что он на именно него ответил я делаю вывод, что вопрос был понят как минимум им.
    То, что ты его не понял это совершенно не страшно, т.к. вопрос задавался не тебе, но тем не менее ты ответил.
    И ответил совершенно невпопад. Твоё желание продвигать Nemerle похвально, но именно эта попытка была неудачной.
    И просьба: не отвечай на это сообщение — тема вроде исчерпана.
    now playing: Pyro — Implant Control
    Re[32]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.10.06 20:29
    Оценка: 3 (1) +1
    Здравствуйте, EvilChild, Вы писали:

    EC>Так вроде авторы справляются это несерьёзно — представь себе среднюю контору, использующую C#. В ней не найдётся людей достаточно квалифицированных, чтобы исправить серёзную ошибку в компиляторе Nemerle. А ждать когда разработчики соизволять что-то зафиксить может быть непозволительным — например у тебя через неделю релиз и тут приходит злой ICE.


    А ты сравни это с тем положением которое есть сейчас с тем же C# или VB.NET. Если ты находишь серьезную ошибку в компиляторе, то надеяться вообщ не на кого. Есть сто-процентная гарантия, что в ближайшие пол года ошибка исправлена не будет! И единственное что ты можешь сделать — это обойти ее самостоятельно.

    Тут же ты все же можешь хотя бы попытаться исправить ошибку, да и наличие исходников копилятора позволяет хотя бы откомпилровать его в дебаг-режиме и понять суть происходящего. А это дает возможность проще и грамотнее обойти ошибку.

    К тому же ваша контора всегда может заплатить денег тем кто может поправить ошибку. Думад найдутся те кто с удовольствием согласится подзаработать.

    EC>Вменяемость авторов может закончиться в самый неподходящий момент, например они потеряют к проекту интерес как Влад к R#, а у тебя уже тонна кода наколбашена, вложены деньги в обучение людей, куча обязательств перед клиентами — я думаю, что суровые будни коммерческой разработки ты представляешь лучше меня, почему меня собственно и удивил твой интерес.


    Есть исходники. Есть комьюнити. Это не мало. А интерес может потерять и МС. Вот к VB6 (а это можно считать отдельной технологией) МС интерес потеряло. Ну, и что? А ничего все как миленькие перешли на совсем непохожий VB.NET, а многие на C#.

    EC>И ещё момент — а как быть с изменениями в компиляторе, ломающими обратную совместимость?


    Таких практически не было за последнее время. Я припоминаю одно и то не очень страншое. Пара правок кода и все работает.

    EC> Или будет обнаружен баг, для устранения которого её нужно будет сломать (так было с одной уязвимостью в винде — MS отказалась её фиксить в NT 4 по этой причине)?


    Это скорее маркетинг.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[35]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.10.06 20:29
    Оценка: :)
    Здравствуйте, IT, Вы писали:

    IT>Но всё же я должен заметить, что я не тот советчик, на которого нужно равняться, т.к. всё же в определённой степени я уже предвзят.


    Покажите мне того счастливца который написал 10К кода на этом языке и не стал предвзятым после этого.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[26]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.10.06 20:29
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>Не советую. На мой вкус, лучше реализовать ленивый обход дерева:

    S>
    S>        /// <summary>
    S>        /// Recursively iterates through the structure of homogenous elements, using the specified navigator.
    S>        /// Ideal for planarization of the tree-like structures
    S>        /// </summary>
    S>        /// <typeparam name="T">Node type</typeparam>
    S>        /// <param name="root">Structure root node</param>
    S>        /// <param name="navigator">Delegate that returns the collection of forward pointers from the specified node</param>
    S>        /// <returns>Enumerator that lazily iterates through the structure</returns>
    S>        public static IEnumerable<T> IterateThrough<T>(T root, Converter<T, IEnumerable<T>> navigator)
    S>        {
    S>            yield return root;
    
    S>            foreach (T child in navigator(root))
    S>                foreach (T descendant in IterateThrough(child, navigator))
    S>                    yield return descendant;
    S>        }
            
    S>

    S>Для приведенного тобой примера:
    S>
    S>IEnumerable<ListNode> GetNodes(List<NodeType> nodes, Predicate<NodeType> checkNode)
    S>{
    S>  foreach(NodeType node in nodes)
    S>      if (checkNode(node))
    S>        {
    S>          yield return node;
    S>          foreach(NodeType child in IterateThrough(node, delegate(NodeType n) { return n.Nodes; }))
    S>              if(checkNode(child) 
    S>                  yield return child;
    S>        }
    S>}
    S>


    А я как раз вот так делать не советовал бы. Это довольно накладный способ. От варианта с делегатом или темболее с функциональным типом он по возможностям не отличается, а по скорости и занятию памяти отличается в худшую сторону.

    Лучшим решением тут вообще было бы использование класса дерева с встренным итератором реализованным на низком уровне (без yield).
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[32]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.10.06 21:33
    Оценка: :)
    Здравствуйте, EvilChild, Вы писали:

    EC>То, что ты его не понял


    На каком основании ты сделал такой вывод? Вопрос я понял, но он действительно был направлен не ко мне. А главное, вопрос этот бесмысленный. Тут вообще бессмысленно спрашивать. Тут нужно попробовать и оценить самому. Вот IT это сделал.

    EC> это совершенно не страшно, т.к. вопрос задавался не тебе, но тем не менее ты ответил.


    Я на твой вопрос не отвечал. Именно это и забавно. Ты полимизировал со своими домыслами.

    EC>И ответил совершенно невпопад. Твоё желание продвигать Nemerle похвально, но именно эта попытка была неудачной.


    Это не я не в попад ответил. Это ты разговаривашь сам с собой и не слушаешь других.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[27]: Насколько важен синтаксис языка?
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 11.10.06 04:58
    Оценка:
    Здравствуйте, IT, Вы писали:
    IT>Согласен. Но вообще-то задача была продемонстрировать использование локальных функций
    Рулят со страшной силой.
    Вот в примере который я привел — если бы не было анонимных делегатов, то пришлось бы либо а) делать обход дерева только для IEnumerable<T> where T:IEnumerable<T>, либо б) для некоторого Node<T> или INode<T> , оборудованного IEnumerable<Node<T>> Nodes.
    Причем в природе ни a) ни б) не встречаются — древовидно организованные коллекции реализуются достаточно разнообразно.
    А так мы позволяем просто параметризовать метод делегатом T -> IEnumerable<T>.
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[27]: Насколько важен синтаксис языка?
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 11.10.06 08:42
    Оценка:
    Здравствуйте, VladD2, Вы писали:

    VD>Здравствуйте, Sinclair, Вы писали:


    VD>А я как раз вот так делать не советовал бы. Это довольно накладный способ. От варианта с делегатом или темболее с функциональным типом он по возможностям не отличается, а по скорости и занятию памяти отличается в худшую сторону.

    Не понял? IT предлагал сканировать дерево со складыванием в массив. Занятие памяти — O(N). При этом если это делается для поиска чего-то, что часто находится близко к вершине, то значительная часть сканирования будет просто выполнена впустую.
    Я не мерил предлагаемый мной алгоритм, но интуитивно он должен кушать O(Log(N)) памяти.
    VD>Лучшим решением тут вообще было бы использование класса дерева с встренным итератором реализованным на низком уровне (без yield).
    Тут я согласен, но нельзя же гарантировать наличие такого класса в общем случае?
    1.1.4 stable rev. 510
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[33]: Насколько важен синтаксис языка?
    От: EvilChild Ниоткуда  
    Дата: 11.10.06 17:34
    Оценка: 18 (2) +4 :))) :))
    Здравствуйте, VladD2, Вы писали:

    EC>> это совершенно не страшно, т.к. вопрос задавался не тебе, но тем не менее ты ответил.


    VD>Я на твой вопрос не отвечал. Именно это и забавно. Ты полимизировал со своими домыслами.

    Ты русских букв не понимаешь? Процитирую себя:

    Коль уж ты его упомянул хочу спросить. У меня сложилось впечатление, что ты человек исключительно практичный:
    не страдаешь излишним академизмом и не бросаешься на всё новое и блестящее. Тем не менее ты участвуешь в проекте
    по интеграции Nemerle в студию и вообще интересуешься этим языком.
    Это просто любопытство/куча свободного времени или ты действительно веришь что у него есть будущее?

    Я не вижу здесь никакой полемики в упор и обращаюсь к IT с вопросом, а не к своим домыслам.
    Если ты увидел там другое, то ты в серьёзной опасности

    EC>>И ответил совершенно невпопад. Твоё желание продвигать Nemerle похвально, но именно эта попытка была неудачной.


    VD>Это не я не в попад ответил. Это ты разговаривашь сам с собой и не слушаешь других.

    Я там разговаривал с IT и у нас получился интересный и предметный разговор. Ты же не сказал по существу вообще ничего стоящего.
    Видимо поэтому стал выискивать в сообщении то, чего там нет и приписывать мне какие-то домыслы (свои наверное).
    now playing: Corrupt Souls — Racer X
    Re[34]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 14.10.06 16:00
    Оценка:
    Здравствуйте, EvilChild, Вы писали:

    EC>Ты русских букв не понимаешь?


    Не, я не понимаю исключительно людей не умеющих ясно выражать свои мысли.

    EC> Процитирую себя:

    EC>

    EC>Коль уж ты его упомянул хочу спросить. У меня сложилось впечатление, что ты человек исключительно практичный:
    EC>не страдаешь излишним академизмом и не бросаешься на всё новое и блестящее. Тем не менее ты участвуешь в проекте
    EC>по интеграции Nemerle в студию и вообще интересуешься этим языком.
    EC>Это просто любопытство/куча свободного времени или ты действительно веришь что у него есть будущее?

    EC>Я не вижу здесь никакой полемики в упор и обращаюсь к IT с вопросом, а не к своим домыслам.
    EC>Если ты увидел там другое, то ты в серьёзной опасности

    А зачем ты цетируешь свой вопрос к IT? Ты процетируй тот поток сознания который ты излил на простое предложение попробовать самому.

    VD>>Это не я не в попад ответил. Это ты разговаривашь сам с собой и не слушаешь других.

    EC>Я там разговаривал

    Ах, извини. Я не понял, что на мое замечаение ты отвечал не мне, а IT. В следующий раз буду делать скидку на неординарность тсвоего интеллекта.

    EC>Ты же не сказал по существу вообще ничего стоящего.


    А с чем же ты тогда полемизировал? Вообще это уже похоже на разговоры с самим собой.

    EC>Видимо поэтому стал выискивать в сообщении то, чего там нет и приписывать мне какие-то домыслы (свои наверное).


    Случай клинический.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[28]: Насколько важен синтаксис языка?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 14.10.06 16:00
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>Не понял? IT предлагал сканировать дерево со складыванием в массив. Занятие памяти — O(N).


    Итератор это отдельный объект. В твоем случае он создается по два раза ка наждую ветку. Уж лучше массив. И дело тут не в О(х.з.ч.), а в количестве выделений памяти. Это относительно накладная операция. Хотя конечно во многих случаях на это можно забить.

    S>Тут я согласен, но нельзя же гарантировать наличие такого класса в общем случае?


    Нельзя. И тогда самым универсальным решением является сканирование с использвоанием функции. В общем, Map, Iter и Fold решают множество проблем, делают это очень универсально и довольно шустро.
    ... << RSDN@Home 1.2.0 alpha rev. 637>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[35]: Насколько важен синтаксис языка?
    От: EvilChild Ниоткуда  
    Дата: 14.10.06 16:24
    Оценка: -1 :))
    Здравствуйте, VladD2, Вы писали:

    VD>А зачем ты цетируешь свой вопрос к IT? Ты процетируй тот поток сознания который ты излил на простое предложение попробовать самому.

    Тебя всё никак не отпустит?
    Делаю последнюю попытку объяснить.
    Напоминаю разговор:

    EC>>Это просто любопытство/куча свободного времени или ты действительно веришь что у него есть будущее?
    VD>А ты попробуй сам. Только учти это заразительно. Не дай бог втянешся...


    Помоему любому человеку, для которого русский язык родной понятно, что то, что ты написал никак не отвечает на вопрос.
    Понимаешь, меня интересовало видит ли IT будущее у Nemerle, причём здесь сам попробуй?
    Последний раз прошу проветри танк — у тебя настолько накурено, что ты разговорный русский перестал понимать.
    now playing: Sinthetix — Sexstation
    Re[36]: Насколько важен синтаксис языка?
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 14.10.06 17:07
    Оценка: +1
    Здравствуйте, EvilChild, Вы писали:

    EC>Последний раз прошу проветри танк — у тебя настолько накурено, что ты разговорный русский перестал понимать.


    Break, господа. Предлагаю дальше эту тему не развивать.
    ... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
    AVK Blog
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.