Pull to refresh

Comments 38

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

@EnglishDom, а сделайте разбор, как вы умеете? Мне, как не нейтиву и в голову не приходило, что "else" считалось/считается устаревшей формой.

тоже враз вспомнил эту шутку!

А выражение What else? тоже устаревше-ошибочное
Наверное, речь об употреблении как соответствующей части речи — в форме союза.

Т.е. «if C then A else B» можно перевести как «если У то А ещё Б». Совсем не звучит…
Пропозал МакКарти очевидно наиболее лаконичный:

image

Он же нашел свое отражение в лиспе, но там он называется COND:

(cond ((equal a 1) (print "one"))                                                                                                                       
      ((equal a 2) (print "two"))                                                                                                                       
      (t (print "unknown"))) 
Ну строго говоря лисповский cond не имеет идиоматики else как бинарной альтернативной ветки выполнения. Он скорее аналог цикла for-each с брякой внутри если предикат обработал итерируемый списочный объект.
UFO just landed and posted this here
Причем этот вариант так победил, что then превращается то в do, то в двоеточие, то в скобку, т.е. вообще исчезает.
Так что да — краткость один из главных критериев. Тем более на старых экранах. И вообще символы в памяти надо экономить.

В те времена и экранов-то никаких, ещё, не было. Перфоратор, пачка перфокарт, да какая-нить пишмашинка, типа консула. Какое уж там автодополнение! Кстати, интересно, кто и когда его придумал? Во всяких борландпаскалях ещё точно не было! Подветка синтаксиса была, а вот автодополнений я не припомню.

В Turbo Pascal с какой-то версии можно было писать макросы и вешать их на комбинации клавиш. Так можно было создавать свои шаблоны кода, хоть это и не было автодополнением.

Хм, а как же "Nothing else matters"? Что-то мне не кажется, что это слово было такой экзотикой в английском... Или авторы песен Metallica были программистами? :)

Здесь это не союз. Утверждается, что

В обычной речи на английском нельзя использовать «else» в качестве союза,

Хотя и это тоже неправда.

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

- Как вы так быстро выучили английский? - Да они там почти все слова из С++ взяли.

Очень любопытно. Особенно с точки зрения разработчика нового языка. И поиск более удобной конструкции, и как трудно пробивается новое. В моем языке нет конструкции If. Но результат адресации (выполнения) любого концепта может быть успешным или нет. Это мета событие "|" и имеет два значения. Одно по умолчанию "!" успешное, а второе «¬» нет. При необходимости подписаться на событие F и выполнить переход на а выглядит так F | a. А если надо перейти по истинности на а, и на b в противном случае выглядит F | ! a ¬ b. Покритикуйте. Понятно/не понятно. Удобно/не удобно. Любое мнение интересно услышать.

Машина работает как нейронная сеть. Т.е. выполняется адресация и дальше переходы-подписки по событиям как результат выполнения. Переходы по булевой переменной это частный случай. Потому необходимости в If нет.

Сори. Правильно  F | {! a ¬ b}. Имя события и группа подписок на него в формате "значение события" "подписка-переход"

Ну вот вы и сами же ответили на свои вопросы

Автор языка ошибается в тривиальных конструкциях своего языка — на ку… такой язык

Раз вам начали таки отвечать и вы тоже, то отвечу развёрнуто:

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

-путаетесь в собственном творении

-вы минимум 13 лет уже применяете "сори" вместо "извините". Будто, вы заняты только своей прелестью и не развиваетесь в других областях жизни

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

Мне чисто по человечески жаль таких людей, вот что означает мой комментарий выше.

Ну хоть полученный опыт пригодится для чего-то другого.

Синтаксически звучит как шелловое/перловое doThings && reportSuccess || die, кажется ещё в Руби было что-то похожее, люди пользуются. Работает естественно из-за чуть других причин.

И работает по другому и смысл другой. И вопрос не синтаксиса, а внешнего вида. Ладно. Спасибо за мнение.

Это значит, хм, что у ней внутре нейронка?

Как частный случай может быть и нейронка.

Точно так! Без нейронки какой же анализатор и думатель, профанация одна.

В фильме The Demolition man 1994 года полицейские будущего пытаются приструнить злостного нарушителя фразой "Lie down on the ground... or else!"

Это в целом достаточно популярная идиома, которую часто можно услышать особенно в британских сериалах/фильмах/шоу.
www.collinsdictionary.com/dictionary/english/or-else
В конструкции if-then-else как раз потерялось or у else, иначе бы звучало по вполне по правилам. Но or очевидно уже было занято как служебное слово.

Конструкция не закончена, компилятор ругаться будет.

В обычной речи на английском нельзя использовать «else» в качестве союза

Что-то как-то сомнительно.

Используют только в путь. Там не все примеры релевантны, но всё же.

It was already dead when we pulled it up, else we would have thrown him back in and let him live.

and before you respond, Nokia fans, consider this: the N8 is incontrovertibly a response to the iPhone, else we would have seen it in 2006;

That never happened with F-commerce or Twitter, else we would have known it by now

Имхо это современное использование, которое могло уже вдохновиться парадигмой if-then-else, а в 1960м этого всего ещё не было.

Скорее, это сокращённая форма от "or else".

Придумывая новый высокодекоративный императивно-функциональный язык 5-го поколения, основанный на потоках (связанных цепочках) инструкций, обрабатывающих потоки (последовательности) данных. Я недавно искал альтернативу инструкции else (так как классический блок if else резервировал для непрерывного блока последовательных инструкций) — мне нужно было что-то близкое к блоку «defualt» языковой конструкции близкой к switch в С++ и C# — но ключевое слово defualt не нравилось (хотя по смыслу как раз очень подходило — но так же зарезервировал его для других целей). Вот в Kotlin и в C# (switch как выражение; Nemerle Match, Scala Match) используют "_" как вариант по умолчанию-иначе — мне нравился этот вариант когда-то, а сейчас разонравился (потому что у меня это условно библиотечная Команда, а не оператор или иной предопределённый синтаксический лексем языка)…
пока я остановился на слове «Undone», вот теперь нашёл ещё оду альтернативу «else»- «otherwise» (ключевое слво «if» — у меня заменилося на команду «Filter»:

val res =
(val elm < — Data) -> Multitask ->
| Filter(cond1) -> Proccess1
| Filter(cond2) -> Proccess2
| Otherwise -> ProcessNothing

(да ноги тут отчасти растут из ЯП Ocaml)
Здесь каждая строчка — это отдельный поток инструкций (условно в одной инструкции Process..) обработки данных из потока Data. В ячейку «res» будет помещён результат в приоритете первого потока — если он его вернёт, второго если он его вернёт — или последнего в ином любом случае. По логике это близко к паттерн-метчингу — так как каждый поток начинается с проверки условия — если условие не отработало — то поток ничего не вернёт. А кманда Multitask делает (разрешает но не обязует) обработку поток ещё и асинхронной — поэтому потоки могут выполниться в разное время не в порядке очерёдности написания — но результат будет выбран в порядке очерёдности написания (для другой очерёдности нужно отдельно её задавать специальными командами). И если более ранний поток вернул не пустой результат, отельные не выполняются или приостанавливаются.

А вот если нужен был бы любой — первый кто вернёт результат — то инструкция была бы такой

val res =
(val elm < — Data) -> Multitask -> Any ->
| Filter(cond1) -> Proccess1
| Filter(cond2) -> Proccess2
| Otherwise -> ProcessNothing

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

А если нужно строго последовательное вырполнение всех инструкций то так

val res =
(val elm < — Data) -> Multitask ->
, Filter(cond1) -> Proccess1
, Filter(cond2) -> Proccess2
, Otherwise -> ProcessNothing

И даже тут есть секция иначе — она тоже контролирует результат — например она сработает коллекция Data будет пустой — и ни одна строчка не отработает — или не сработает ни одно условие в строке (а тут оно есть, но его может и не быть).

Вот такая вот у меня логика.
Хотя слово «Undone» тоже хорошее

Data ->
| ProccessElement(it)
| Undone -> ProcessNothing()

Это простой цикл перебора элементов из «Data» с обработкой «ProccessElement» в — но если «Data» будет пустым — то сработает «ProcessNothing».

Конечно тут логичнее применить команду «Empty» (и она должна быть у Потоков данных — в этом прелесть команд на уровне Библиотек — их можно вводить сколько угодно любых и разных в для разных целевых объектов), но по сути она просто ссылается на более универсальную команду «Undone» или «Otherwise» — но… любую из них можно макро-переопределить для другого объекта — не переопределяя их все — и тем самым назначить ей другую логику макро-обработки при компиляции или при исполнении! Хотя так (по рознь), конечно с алиасами команд делать не стоит

"undone" — плохое слово, имеет значение "погубленный" (потащил из Evanescence — Bring Me To Life, но гугл-перевод также его показывает). "unprocessed" — возможно, больше бы подошло здесь.

Возможно Вы правы. Просто хотелось иметь более короткий и абстрактный термин (читай — универсальный). А ещё отталкивался от слова «done» — как от антонима — команды, зарабатываемой в конце после успешного выполнения блока потоков инструкций (его успешность определяется по-разному, как уже было показано выше — всё зависит от применённых команд при инициализации блока). Но тогда есть ещё такая пара successful / unsuccessful — возможно это оптимальный вариант, но попытка сократить их написание что-то не особенно благозвучная получилась succ / unscucc — хотя тут «cc» на конце, а не «ck» :-|

— Is you wife working now ?
— No she is doing something else.

"Else" здесь используется не как союз, а как дополнение. "No she is doing something" выбрасываем из языка программирования лишнее и получается наша конструкция. КОНЕЦ СТАТЬИ

PS
В таком контексте "else" остаётся актуальным по сей день и используется повсеместно.

Sign up to leave a comment.