Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Здравствуйте, Курилка, Вы писали:
К>>>>"просто вы не умеете их готовить" VD>>>Не умеем. и не хомим уметь. Вот уже почти 35 лет как не хоим.
К>>Так никтож не заставляет К>>Ответь тогда на вопрос — что хотите? 35 лет?
ГВ>Они 35 лет нехотят Lisp. Это йога такая — нехотеть Lisp. (заговорщически) Слышал, наверное, про "не думать о белой обезьяне"? Так вот, это почти оно.
В науке это состояние души называется нигилисп.
В оригинале, кстати, было сказано "не хомим Lisp" или "не хоим Lisp".
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Здравствуйте, quadrochups, Вы писали:
ANS>Не спора ради, но чисто из интереса, а как ты читаеш конструкцию: ANS>
ANS>условие ? то-то : что-то;
ANS>
ANS>?
Вопрос не мне, но выскажусь тоже, заранее прошу прощения за лексику, но "ужас нах" . Да я, плохо знаю С и его потомков. На работе используем Delphi+VBA+TSQL.
лучше уж как в SmallTalk:
условие еслиИстина: [делаем то-то].
Вообще говоря все дело привычки. Конечно же напрягает "мозги выворачивать" если привык к определенному синтаксису (например алголоподобным if-ам), кого-то больше кого-то меньше, кого-то недолго кому-то совсем "ниасилить". Все зависит от конкретного индивидума, так что споры бессмысленны.
Здравствуйте, quadrochups, Вы писали:
Q>Я на выходных немного поковырял Смоллток и пришёл к выводу — всё таки нужен ДРУГОЙ язык. Ибо мозги у меня нормальные и когда я читаю "если условие, то сделать то-то", это более понимаемо, чем "условие :ЕслиДа делать то-то".
Ну очень захотелось написать.
Я на выходных немного поковырял Java и C# и пришёл к выводу — всё таки нужен ДРУГОЙ язык. Ибо мозги у меня нормальные и когда я читаю "условие еслиДа: (делать то-то)", это более понимаемо, чем "если (условие) {сделать то-то}". Ну где здесь объекты? Где сообщения? Не по-ни-ма-ю!!!
Здравствуйте, Quintanar, Вы писали:
Q>Т.е. вы считаете любителей Smalltalk ненормальными? Как вы оценили собственную нормальность?
А, думашь, можно назвать нормальными людей безастенчиво обсуждающих простоту и логичность чего-то в теме с названием "есть что-то с нармальным синтаксисом"?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Mirrorer, Вы писали:
M>Оно то конечно да, но почему во все мейнстримовые языки добавили поддержку регулярных выражений ?
Во всех? Ой ли. Если только через библиотеки.
Ну, а почему — понятно. По глупости. Ужасный, нечитаемый язык эти регексы. Вместо них можно было спокойно использовать EBNF или что-то вроде.
А вот ты уже явно занимашся подменой темы. Какое отношение регексы имеют к извращениям в Смолтоковском синтаксисе? Ты намешаешь на то, что код на Смолтоке понятнее или кратче от этого становится?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, quadrochups, Вы писали:
Q>Всё это очень забавно, но ПО СУТИ не добавляет НИЧЕГО в семантику программы. Будет обработчик в иксепшыне, или после проверки error code, или в вашем continuation значения НЕ ИМЕЕТ. Я скажу больше — CPS и возник-то именно благодаря тому, что "обычный IF" не вписывался в идеологию "объект-сообщение" — вот и превратили лошадь в верблюда...
Нет. Конечно, нет. CPS — это забавный прием упрощающий в некоторых случаях решение проблем. Вот только к смолтоковскому вывернутому синтаксису CPS отношения не имеет. CPS можно применять в любом языке. Правда желательно чтобы копилятор обеспечивал некоторые оптимизации (вроде устранения концевой рекурсии), но это ерунда. Вот, например, я тут как-то извращался (код парсинга квалифицированного идентификатора (разделенного точками)):
Здравствуйте, FDSC, Вы писали:
FDS>Учтите, думать в нотации языка Pascal гораздо удобнее, чем в сишной, однако его клоны не так сильно распространены как си. Так что, возможно, дело в помочных эффектах
Pascal и С — оба являются клонами Алгола/Фортрана. Так что учить один после другого не сложно. А выбор между ними — это выбор предпочтений.
Смолток и Лисп другое дело. Именно об этом я и говорил когда рассуждал о традиционности.
И мне забавно наблюдать как еденицы привыкшие к некому нетрадиционному синтаксису всеми силами пытаются навязать окружающим мысль о том, что этот синтаксис совершенно традиционен, аргументируя свое мнение тем, что у других гранаты другой системы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>выше степень переиспользования кода, выше уровень абстракции, выше степень инкапсуляции.
Да? Докажи. А пока это утврждение будем считать шуткой юмора.
Д>>и почему нельзя использовать ее с привычным С-style синтаксисом?
ANS>можно. У java слишком большой синтаксический оверхед, а в C#2 всё нормально для этого.
Ну, так и в чем дело? Чем тогда C# 2.0 хуже?
Я я вот могу сказать, что Смолток — это язык с большим синтаксическим оверхэдом. Если сравнить его с любым языком обладающим сопоставлением с образцом, то Смолток сольем по полной. Причем как по объему кода, так и по его понятности.
ANS>PS Кстати, этот вариант ANS>
ANS>В начале нужно объеденить первую и вторую строчку, потому что эти две физические конструкции объеденяют одну логическую. И так, убираем точку-с-запятой и переносим "if" на верх. Затем вместо шифровки "value == null" пишем простое и понятное "Absent". И, вуаля...
Ты лучше объясни, что ты хочешь добиться этим кодом. А то я уверен, что если код примет опсмысленный вид, то его можно будет записать и короче, и понятнее и без каких-либо вывертов в язке.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Не спора ради, но чисто из интереса, а как ты читаеш конструкцию: ANS>
ANS>условие ? то-то : что-то;
ANS>
ANS>?
Кстати, неудобная конструкция. В Немерле она выглядит куда понятнее:
if (условие) то-то else что-то
по тому в C#/С++ я редко использовал "?:", а вложенных вообще избегал, а в Немерле во всю использую ифы любой сложности. Правда наличие кострукции match зачастую делает и их ненужными.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Курилка, Вы писали:
К>Так вот — хотелось бы рассмотреть вопрос: насколько синтаксис языка определяет его удобство для использования?
Зависит от уровня интеллекта программиста. Те, кто попроще, попримитивнее, руководствуются привычками. Естественно, для них однажды выработанная привычка становится высочайшей ценностью. Те, кто поумнее, кто поближе к званию "хомо сапиенс" — способны быстро, легко и не задумываясь программировать себя. Нужно новый синтаксис научиться воспринимать? Легко, программируем себя за пять минут, и читаем с листа. Нужно вообще без синтаксиса — ещё проще. И тем, кто умный, Лисп даёт огромные преимущества. Им не надо напрягаться. Они могут воспользоваться всем, что предоставляет язык, не нарываясь на проблемы, типичные для глупых. Так что, понятно, Лисп — язык не для всех. Не надо пытаться его продвинуть в мейнстрим. В мейнстриме, в основном, люди примитивные и ограниченные.
Здравствуйте, Курилка, Вы писали:
A>>зЫ: Познакомьтес с Фортом — он может вообще всё, но захотите ли вы этим воспользоваться?
К>Может всё любой полный по тьюрингу язык — а толку? Давайте все будем писать на брейнфаке?
Здравствуйте, 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()
Здравствуйте, Vermicious Knid, Вы писали:
VK>VladD2, ты сильно на меня не сердись. Этот код можно было написать один-в-один, но без CPS. В Nemerle есть одна не очень хорошо документированная фича: VK>[ccode] VK>and
Я кого хочешь, в чем хочешь прощу, если мне обяснят суть этой вещи . Я уже видел подобный код в компиляторе, но так его и не понял к своему стыду. Поясни, плиз, его смысл.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, pavel74, Вы писали:
P>Вопрос не мне, но выскажусь тоже, заранее прошу прощения за лексику, но "ужас нах" . Да я, плохо знаю С и его потомков. На работе используем Delphi+VBA+TSQL.
P>лучше уж как в SmallTalk: P>условие еслиИстина: [делаем то-то].
P>Вообще говоря все дело привычки.
А ты не трепись, а возьми и на рабое исползуй вместо Дельфи+АБП+ТЭмЕкЭль какой-нить Дольфин+МайЭсКуЭль+ещеКакяТоХрень, а потом поделись мнеием. Уверен, что после Дельфи Дольфин тебя не впечатлит.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VK>>and VD>Я кого хочешь, в чем хочешь прощу, если мне обяснят суть этой вещи . Я уже видел подобный код в компиляторе, но так его и не понял к своему стыду. Поясни, плиз, его смысл.
Поясняю.
// здесь функция parse недоступна
def parseComment() { parse() } // ошибка
def parse() { }
// локальные функции и значения доступны в коде следующем за их объявлением
// and как бы объединяет объявление нескольких локальных функций в одно объявление
// и они становятся доступными друг для друга
def parseComment() { parse() } // ok
and parse() { }
Черт его знает хорошо ли это или нет, но такова семантика локальных объявлений в Nemerle. Скорее всего это связано еще с тем, что повторное объявление локальной фунции или значения с тем же именем перекрывает старое.
Здравствуйте, Win2k, Вы писали:
W> Зависит от уровня интеллекта программиста.
Ага.
W> Те, кто попроще, попримитивнее, руководствуются привычками.
Те кто еще проще, руководствуются разумом и необходимостью.
W> Естественно, для них однажды выработанная привычка становится высочайшей ценностью.
Ага.
W> Те, кто поумнее, кто поближе к званию "хомо сапиенс" — способны быстро, легко и не задумываясь программировать себя.
Ну, да. Те кто ближе к человекообразным обезьянам, те с удовольствием занимаются самодресровкой. Те кто ближе к людям — понимают, что силы лучше тратить на решение задачь стоящих перед ними.
W> Нужно новый синтаксис научиться воспринимать?
Кому? Цирковым обезьянкам? Вряд ли. Если толко дресировщикам.
W> Легко, программируем себя за пять минут, и читаем с листа. Нужно вообще без синтаксиса — ещё проще.
Да, да. Без смысла вообещ влет. "Трава рулит однозначно".
W> И тем, кто умный, Лисп даёт огромные преимущества.
Ну, да. Тем кто умный все что угодно дает огромное приемущество. Но вот фататикам... Вряд ли.
W> Им не надо напрягаться.
Ну, да. Зачем?
W> Они могут воспользоваться всем, что предоставляет язык, не нарываясь на проблемы, типичные для глупых.
Ага. Понты они все проблемы снимают.
W> Так что, понятно, Лисп — язык не для всех.
Ага. Для всех кому не надо напрягаться.
W> Не надо пытаться его продвинуть в мейнстрим.
Действительно! Зачем, если он уже "для всех"?
W> В мейнстриме, в основном, люди примитивные и ограниченные.
Ага. Просто твоя копия, только без таких понтов. И еще, некоторые, кое что сдели в этой жизни. Вот уроды? Нет чтобы пальцы по гнуть?
Ты бы пальчики чуть-чуть разогнул. А то твои понты уже достали.
Ничего в этой жизни не достиг, а понты как будто 'Бил Гэйсц. Хотя... последнему потны в общем-то не нужы. Он и так что-то достиг в этой жизни.
В общем, ты меня уж извини за сорказм и насмешки, но ты уже своими понтами достал. Если есть что сказать, то говори, а нет, так молчи. Нефига пытаться заработать авторитет на обсирании окружающих.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.