Comments 38
Спасибо за этот небольшой экскурс. Действительно, любопытно посмотреть с современной точки зрения на предлагавшиеся формы.
@EnglishDom, а сделайте разбор, как вы умеете? Мне, как не нейтиву и в голову не приходило, что "else" считалось/считается устаревшей формой.
Стрейчи отказывался использовать «else», называя его «невежественно ошибочным английским»
Shakespeare would be ashamed to see his native tongue twisted into this monstrosity. … There are many options for its replacement, but this may be the strongest:
perchance (£condition) { // Code here } otherwise { // Code here }
![image](https://habrastorage.org/getpro/habr/comment_images/6f5/365/748/6f536574852016a8bd89682124910cb3.png)
Он же нашел свое отражение в лиспе, но там он называется COND:
(cond ((equal a 1) (print "one"))
((equal a 2) (print "two"))
(t (print "unknown")))
Так что да — краткость один из главных критериев. Тем более на старых экранах. И вообще символы в памяти надо экономить.
В те времена и экранов-то никаких, ещё, не было. Перфоратор, пачка перфокарт, да какая-нить пишмашинка, типа консула. Какое уж там автодополнение! Кстати, интересно, кто и когда его придумал? Во всяких борландпаскалях ещё точно не было! Подветка синтаксиса была, а вот автодополнений я не припомню.
Хм, а как же "Nothing else matters"? Что-то мне не кажется, что это слово было такой экзотикой в английском... Или авторы песен Metallica были программистами? :)
Очень любопытно. Особенно с точки зрения разработчика нового языка. И поиск более удобной конструкции, и как трудно пробивается новое. В моем языке нет конструкции 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
https://www.fortran.com/FortranForTheIBM704.pdf
не открывается
пока я остановился на слове «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" — возможно, больше бы подошло здесь.
Тем временем в js https://www.youtube.com/watch?v=EumXak7TyQ0
— Is you wife working now ?
— No she is doing something else.
"Else" здесь используется не как союз, а как дополнение. "No she is doing something" выбрасываем из языка программирования лишнее и получается наша конструкция. КОНЕЦ СТАТЬИ
PS
В таком контексте "else" остаётся актуальным по сей день и используется повсеместно.
if-then-else кто-то должен был изобрести