Здравствуйте, Курилка, Вы писали:
К>Нисколько не единственное, покажи мне замыкания и континьюэйшны на лого? К>Конечно в итоге всё к машинным кодам сводится, но программист оперирует понятиями/возможностями конкретного языка, на котором пишет
Всё это встраивается. Делается умное лицо и добавляется. Особенно Мелкософт этим увлекается.
A>>зЫ: Познакомьтес с Фортом — он может вообще всё, но захотите ли вы этим воспользоваться?
К>Может всё любой полный по тьюрингу язык — а толку? Давайте все будем писать на брейнфаке?
Здравствуйте, c-smile, Вы писали:
CS>В науке это состояние души называется нигилисп.
а ещё NILisp CS>В оригинале, кстати, было сказано "не хомим Lisp" или "не хоим Lisp".
Это просто опечатка, подразумевалось, очевидно, "не хамим" и "не хаем".
Здравствуйте, Трурль, Вы писали:
Т>Здравствуйте, c-smile, Вы писали:
CS>>В науке это состояние души называется нигилисп. Т>а ещё NILisp CS>>В оригинале, кстати, было сказано "не хомим Lisp" или "не хоим Lisp". Т>Это просто опечатка, подразумевалось, очевидно, "не хамим" и "не хаем".
Здравствуйте, _rasta, Вы писали:
_>Здравствуйте, Трурль, Вы писали:
Т>>Здравствуйте, c-smile, Вы писали:
CS>>>В науке это состояние души называется нигилисп. Т>>а ещё NILisp CS>>>В оригинале, кстати, было сказано "не хомим Lisp" или "не хоим Lisp". Т>>Это просто опечатка, подразумевалось, очевидно, "не хамим" и "не хаем".
_>или "не хотим"?
И тут еще некторые удтверждают что синтаксис не важен
Здравствуйте, FR, Вы писали:
CS>>>>В оригинале, кстати, было сказано "не хомим Lisp" или "не хоим Lisp". Т>>>Это просто опечатка, подразумевалось, очевидно, "не хамим" и "не хаем". _>>или "не хотим"? FR>И тут еще некторые удтверждают что синтаксис не важен
тут некоторые утверждают что есть некая мифическая легкость восприятия
Здравствуйте, FR, Вы писали:
CS>>>>В оригинале, кстати, было сказано "не хомим Lisp" или "не хоим Lisp". Т>>>Это просто опечатка, подразумевалось, очевидно, "не хамим" и "не хаем".
_>>или "не хотим"?
FR>И тут еще некторые удтверждают что синтаксис не важен
Надеюсь, никто не станет утверждать, что Влад написал это на Smalltalk?
Win2k,
К>>Так вот — хотелось бы рассмотреть вопрос: насколько синтаксис языка определяет его удобство для использования?
W> [очень противоречивый пост, кое-что улыбнуло, кое-что понравилось]
...но не согласен с отношением к другим.
Здравствуйте, VladD2, Вы писали:
VD>Во всех? Ой ли. Если только через библиотеки.
Допустим через библиотеки. Важно то, что они есть, а EBNF нету. Ну или практически нету. Может быть и есть в каких-то бибилиотеках, тут я не специалист. Но в основной массе используются почему-то регулярные выражения.
VD>Ужасный, нечитаемый язык эти регексы.
Сам их терпеть ненавижу. Но ведь добавили почему-то ?
VD>Вместо них можно было спокойно использовать EBNF или что-то вроде.
А почему не используют ? Мне дествительно интересно (без подколок). И склоняюсь к мнению что наверное просто ничего удобнее не придумали. ИМХО конечно.
VD>А вот ты уже явно занимашся подменой темы.
Отнюдь. Регэксы появились как ответ на замечание Дареня о том, что "нормальный" вариант — это вариант с наименьшей неожиданностью. На что я заметил, что для меня появление регэксов в мейнстиримовых языках было неожиданностью. (Ну или появления поддержки регэксов, если угодно).
VD> Какое отношение регексы имеют к извращениям в Смолтоковском синтаксисе?
Я предположил что если регэксы в каких-то случаях удобны, то и смолтолковский синтаксис в каких-то случаях будет удобен. Могу ошибаться. Я не знаю Смолтолка.
VD>Ты намешаешь на то, что код на Смолтоке понятнее или кратче от этого становится?
Не сказал бы. Для меня такой код непривычен. Но как говорил один изветный персонаж
это "ЖЖЖЖ" неспроста. Если Смолтолк сделали таким, может это кому-нибудь нужно ? Может за этим скрывается какая-то идея ? Сложно об этом судить, не изучив язык. И если Смолтолк о сих пор не умер, говорит о том, что он кому-то нужен. Можно приводить пример Кобола, который тоже не умер. Но тем не менее, это значит только то, что и для него есть какая-то ниша. Естественно, я могу ошибаться.
Здравствуйте, 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#.
Здравствуйте, Дарней, Вы писали:
ANS>>выше степень переиспользования кода, выше уровень абстракции, выше степень инкапсуляции.
Д>Для этого должны быть какие-то веские причины. Приведенный тобой пример совершенно не убеждает. Ни по понятности, ни по краткости.
Тогда извини.
Если ты уверен в том, что вместо одной операции лучше постоянно применять несколько более примитивных операций, то я не буду тебя переубеждать. Тем более, что в C# всё равно нет альтернативы последнему. Но в этом случае я не понимаю, почему народ так радовался появлению foreach, using в С# если проще всё делать по старинке по кусочкам?
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, как раз и была "болтливость" последнего. Программистам платили, правда, не по символам, а по строкам.
Здравствуйте, Win2k, Вы писали:
W> Зависит от уровня интеллекта программиста. Те, кто попроще, попримитивнее, руководствуются привычками. Естественно, для них однажды выработанная привычка становится высочайшей ценностью. Те, кто поумнее, кто поближе к званию "хомо сапиенс" — способны быстро, легко и не задумываясь программировать себя. Нужно новый синтаксис научиться воспринимать? Легко, программируем себя за пять минут, и читаем с листа. Нужно вообще без синтаксиса — ещё проще. И тем, кто умный, Лисп даёт огромные преимущества. Им не надо напрягаться. Они могут воспользоваться всем, что предоставляет язык, не нарываясь на проблемы, типичные для глупых.
Если принять данные утверждения на веру, то у меня есть такой вопрос: как организовать рекрутерскую политику в софтверной компании, чтобы привлечь к себе на работу человек десять таких специалистов (не обязательно готовых, но способных к такой быстрой обучаемости и перепрограммированию)? А то мы вот в постоянном поиске толковых людей, но пока таких, как вы описываете не видели Причем нужно именно человек десять, лучше даже больше, а то работы много
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Если ты уверен в том, что вместо одной операции лучше постоянно применять несколько более примитивных операций, то я не буду тебя переубеждать. Тем более, что в C# всё равно нет альтернативы последнему. Но в этом случае я не понимаю, почему народ так радовался появлению foreach, using в С# если проще всё делать по старинке по кусочкам?
потому что это не одна операция, а две, причем слабо связанных логически. То, что в смоллтоке их можно совместить в одну конструкцию, выглядит для меня скорее минусом чем плюсом.
Здравствуйте, 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.: Винодельческие провинции — это есть рулез!
Здравствуйте, Win2k, Вы писали:
W> Зависит от уровня интеллекта программиста. Те, кто попроще, попримитивнее, руководствуются привычками. Естественно, для них однажды выработанная привычка становится высочайшей ценностью. Те, кто поумнее, кто поближе к званию "хомо сапиенс" — способны быстро, легко и не задумываясь программировать себя.
Кстати способность программировать себя мало коррелирует с интеллектуальными способностями. Есть умнейшие люди не способные на это и наооборот.
Здравствуйте, 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). И этот конфликт нужно разруливать через изменение компилятора/парсера.